选择@@ Identity为Access中的链接表返回0

时间:2009-04-11 05:11:31

标签: mysql ms-access ms-access-2007

我正在使用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,但我没有得到满意的回答

3 个答案:

答案 0 :(得分:2)

SELECT LAST_INSERT_ID()

答案 1 :(得分:1)

对于mySQL语句,fredrik获得了部分功劳。重要的是要注意我正在使用DAO,因此语句由JET引擎处理,它不支持此语句。这需要作为Access中的传递查询运行,以便工作。在我使用fredrik的select语句进行查询传递后,就可以了。我从我的DAO代码中调用了这个Access passthrough查询,但它确实有效。

答案 2 :(得分:0)

我没有使用过mysql。那么,翻译我对mysql所说的内容。

CustomerID是一个标识列(即它是否自己生成ID)? 如果是这样,请使用返回最后生成的ID的函数。

@@ Identity函数是人们在SQL Server中使用的函数。我不知道mysql中的等价物 见this

查看上面的代码,您无需打开第二个记录集。 rsNewID1应该可以帮助您获取最后插入的ID。

希望这有帮助。