这是一段鲜为人知的故事。
@@IDENTITY 变量
@@IDENTITY
变量是一个全局的SQL变量,用户可以用它来提取使用(自动编号)数据类型的列的最后使用值。用户在提取@@IDENTITY
变量时,不能指定表的名称。返回值总是
最近的通过代码插入了数据的表的自动编号ID。(如果vba插入表1数据,那么@@IDENTITY返回表1最后的ID,如果同时插入表1,表2数据,那么返回表2(后插入数据)的最后的ID)
SELECT @@IDENTITY
要给@@IDENTITY 值加上某个值,要将该变量用方括号括起来。
SELECT [@@IDENTITY] + 1
注意 上面SQL 语句中的@@IDENTITY变量只能通过Jet OLE DB
provider (或ace)和 ADO执行提取,通过Access SQL View
用户界面提取的值将是0,另外,该值只有在通过代码插入记录时才会改变,如果通过用户接口,不管是数据表单、窗体还是Access SQL View窗口中的SQL语句,
@@IDENTITY返回值都是0。因此, @@IDENTITY 的值只有在刚刚通过代码加入了记录是才是准确的。
需要注意的是获取自动编号的命令和插入记录的命令必须是在同一次打开数据库连接时执行否则Select @@Identity 返回为0。也就是说它们必须是在同一个Connection之中。例子代码下载