Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Получаване на ID на последния вмъкнат запис - Access DAO, ODBC, поле за самоличност на SQL Server 2008

Доколкото ми е известно @@IDENTITY не работи за вмъквания, базирани на курсора. DAO и ADO използват курсори зад кулисите.

След като .Update записа, трябва да можете да върнете стойността на самоличността просто като я прочетете.

Следното работи добре за мен чрез ADO Recordset, отворен със семантика на Keyset:

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

Следното работи добре за мен чрез DAO Recordset, отворен със семантика на Dynaset:

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

Трябва да избягвате .Requery и .MoveFirst , вие въвеждате проблеми с паралелността. Помислете за следното:

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. ЗАДАДЕТЕ NOCOUNT ЗА употреба

  2. Избиране на данни от два различни сървъра в SQL Server

  3. Препоръчителни процесори Intel за SQL Server 2014 – март 2015 г

  4. Достъп до съобщенията на SQL Server чрез ADO.NET

  5. Unicode в SQL Server 2012 Express