sql >> Databáze >  >> RDS >> Sqlserver

Získat ID naposledy vloženého záznamu – Přístup k poli identity DAO, ODBC, SQL Server 2008

Pokud vím, @@IDENTITY nefunguje pro vkládání založené na kurzoru. DAO i ADO používají kurzory za scénou.

Po .Update záznamu, měli byste být schopni získat hodnotu identity zpět jednoduše přečtením hodnoty.

Následující pro mě funguje dobře prostřednictvím sady záznamů ADO otevřené sémantiky sady klíčů:

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

Následující postup mi funguje dobře prostřednictvím sady záznamů DAO otevřené sémantiky Dynaset:

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

Měli byste se vyhnout .Requery a .MoveFirst , zavádíte problémy se souběžností. Zvažte:

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. Podmíněný počet SQL

  2. Pamatujte na to při formátování datového typu TIME v SQL Server (T-SQL)

  3. mysql:proč porovnávání „řetězce“ s 0 dává pravdu?

  4. SQL Server:Musím mezi dávkami používat příkazy GO?