相关疑难解决方法(0)

SELECT @@ IDENTITY不是DB对象的范围?

我在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)

ms-access jet

4
推荐指数
1
解决办法
3919
查看次数

标签 统计

jet ×1

ms-access ×1