我正在使用Access 2007并且有一些链接表到mySQL数据库。我正在使用DAO将记录插入mySQL链接表并尝试使用Select @@ identity检索插入的PK,但该选择返回0。
Dim sql As String
Dim oDB As Database
Set oDB = CurrentDb
sql = "INSERT INTO Quotes ( CustomerID ) SELECT 1 AS Expr1;"
oDB.Execute sql
If oDB.RecordsAffected <> 1 Then
MsgBox "cannot create new quote"
Exit Function
End If
Dim rsNewID As DAO.Recordset
Set rsNewID = oDB.OpenRecordset("SELECT @@IDENTITY") ' Create a recordset and SELECT the new Identity
Dim intNewID As Long
intNewID = rsNewID(0).Value ' Store the value of the new identity in variable intNewID
'This value is 0, why?
我见过another question like this,但我没有得到满意的回答
答案 0 :(得分:2)
SELECT LAST_INSERT_ID()
答案 1 :(得分:1)
答案 2 :(得分:0)
我没有使用过mysql。那么,翻译我对mysql所说的内容。
CustomerID是一个标识列(即它是否自己生成ID)? 如果是这样,请使用返回最后生成的ID的函数。
@@ Identity函数是人们在SQL Server中使用的函数。我不知道mysql中的等价物 见this
查看上面的代码,您无需打开第二个记录集。 rsNewID1
应该可以帮助您获取最后插入的ID。
希望这有帮助。