我在MS Access中有以下代码:
Sub IdentityFail()
Dim db1 As DAO.Database, db2 As DAO.Database
Dim id1 As Long, id2 As Long
CurrentDb.Execute "CREATE TABLE LocalDummy (Col1 AUTOINCREMENT, Col2 INT)", dbFailOnError
Set db1 = CurrentDb
Set db2 = CurrentDb
db1.Execute "INSERT INTO LocalDummy(Col2) VALUES(Null)", dbFailOnError
id1 = db1.OpenRecordset("SELECT @@IDENTITY")(0)
db2.Execute "INSERT INTO LocalDummy(Col2) VALUES(Null)", dbFailOnError
id2 = db2.OpenRecordset("SELECT @@IDENTITY")(0)
Debug.Print id1, id2
Debug.Print db1.OpenRecordset("SELECT @@IDENTITY")(0), _
db2.OpenRecordset("SELECT @@IDENTITY")(0), _
CurrentDb.OpenRecordset("SELECT @@IDENTITY")(0)
End Sub
Run Code Online (Sandbox Code Playgroud)
我希望这会输出以下内容(即,每个不同的db对象都有自己的"最新标识"值):
1 2
1 2 0
Run Code Online (Sandbox Code Playgroud)
相反,我得到(即,它似乎是全局范围):
1 2
2 2 …Run Code Online (Sandbox Code Playgroud)