sql >> Database >  >> RDS >> Sqlserver

ID van laatst ingevoegde record ophalen - Toegang tot DAO, ODBC, SQL Server 2008-identiteitsveld

Voor zover ik weet @@IDENTITY werkt niet voor op cursor gebaseerde invoegingen. DAO en ADO gebruiken beide cursors achter de schermen.

Nadat u .Update het record zou je de identiteitswaarde terug moeten kunnen krijgen door simpelweg de waarde te lezen.

Het volgende werkt prima voor mij via een ADO Recordset geopend met Keyset-semantiek:

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

Het volgende werkt prima voor mij via een DAO-recordset geopend met Dynaset-semantiek:

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

Je moet .Requery vermijden en .MoveFirst , introduceert u gelijktijdigheidsproblemen. Overweeg:

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. SELECT van View bevat een subquery in de FROM-component

  2. Maak verbinding met Oracle DB vanuit Spring-jdbc met Oracle Wallet-authenticatie

  3. Hoe onverwachte groei van SQL Server-database TempDB te detecteren en te voorkomen?

  4. Back-up database maken in MySQL met C#