sql >> Databasteknik >  >> RDS >> Sqlserver

Hämta ID för senast infogade post - Access DAO, ODBC, SQL Server 2008 Identity Field

Såvitt jag vet @@IDENTITY fungerar inte för markörbaserade inlägg. DAO och ADO använder båda markörer bakom kulisserna.

Efter att du .Update posten bör du kunna få tillbaka identitetsvärdet helt enkelt genom att läsa värdet.

Följande fungerar bra för mig via en ADO Recordset som öppnats med Keyset-semantik:

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

Följande fungerar bra för mig via en DAO Recordset öppnad med Dynaset semantik:

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

Du bör undvika .Requery och .MoveFirst , introducerar du samtidighetsproblem. Tänk på:

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. Konfigurera Spring boot Docker och Mysql

  2. Länkad dynamisk serverkatalog för exekvering av MDX genom OpenQuery

  3. SQL Query - Begränsande frågeresultat

  4. PostgreSQL:Vilken datatyp ska användas för valuta?