sql >> Database teknologi >  >> RDS >> Sqlserver

Hent ID for sidst indsatte post - Få adgang til DAO, ODBC, SQL Server 2008 Identity Field

Så vidt jeg ved @@IDENTITY virker ikke for markørbaserede indsættelser. DAO og ADO bruger begge markører bag kulisserne.

Når du .Update posten burde du kunne få identitetsværdien tilbage ved blot at læse værdien.

Følgende fungerer fint for mig via et ADO Recordset åbnet med Keyset semantik:

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

Følgende fungerer fint for mig via et DAO Recordset åbnet med Dynaset semantik:

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

Du bør undgå .Requery og .MoveFirst , introducerer du samtidighedsproblemer. Overvej:

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. CASE vs. DECODE

  2. TSQL - Hvordan bruger man GO inde i en BEGIN .. END blok?

  3. ILIKE Match Word Boundaries PostgreSQL 9

  4. Sådan kontrolleres replikeringsfailover for MySQL og MariaDB