Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Uzyskaj identyfikator ostatnio wstawionego rekordu — Access DAO, ODBC, SQL Server 2008 Identity Field

O ile mi wiadomo @@IDENTITY nie działa dla wstawek opartych na kursorze. DAO i ADO używają kursorów za kulisami.

Po .Update rekord, w którym powinieneś być w stanie odzyskać wartość tożsamości, po prostu odczytując wartość.

Następujące działania działają dobrze dla mnie za pośrednictwem zestawu rekordów ADO otwartego z semantyką zestawu kluczy:

r.Update
Debug.Print r("ItemID")

Następujące ustawienia działają dobrze dla mnie za pośrednictwem zestawu rekordów DAO otwartego z semantyką Dynaset:

r.Update
r.Bookmark = r.LastModified
Debug.Print r("ItemID")

Należy unikać .Requery i .MoveFirst , wprowadzasz problemy ze współbieżnością. Rozważ:

Dim r as DAO.Recordset, db as DAO.Database
Set db = CurrentDb
Set r = db.OpenRecordset("SELECT TOP 1 * FROM item ORDER BY ItemID DESC", dbOpenDynaset, dbSeeChanges)
r.AddNew
''// Set field values here
r.Update
''// At this point another user adds a new record
r.Requery
r.MoveFirst ''// ORDER BY ItemID DESC means that you're going to see the new user's row
Debug.Print r("ItemID")


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę uzyskać listę nazw elementów z wartości XML w SQL Server?

  2. Ustaw domyślne pobieranie wierszy w programie SQL Server za pomocą sterownika JDBC

  3. 4 kluczowe działania związane z monitorowaniem baz danych, które każdy administrator baz danych powinien wiedzieć

  4. Błąd podczas uruchamiania skryptu 50 MB na serwerze SQL Server 2008 R2

  5. Czy istnieje test IF EXISTS dla połączonego serwera?