這是一段鮮為人知的故事。
@@IDENTITY 變量
@@IDENTITY
變量是一個全局的SQL變量,用戶可以用它來提取使用(自動編號)數(shù)據(jù)類型的列的最后使用值。用戶在提取@@IDENTITY
變量時,不能指定表的名稱。返回值總是
最近的通過代碼插入了數(shù)據(jù)的表的自動編號ID。(如果vba插入表1數(shù)據(jù),那么@@IDENTITY返回表1最后的ID,如果同時插入表1,表2數(shù)據(jù),那么返回表2(后插入數(shù)據(jù))的最后的ID)
SELECT @@IDENTITY
要給@@IDENTITY 值加上某個值,要將該變量用方括號括起來。
SELECT [@@IDENTITY] + 1
注意 上面SQL 語句中的@@IDENTITY變量只能通過Jet OLE DB
provider (或ace)和 ADO執(zhí)行提取,通過Access SQL View
用戶界面提取的值將是0,另外,該值只有在通過代碼插入記錄時才會改變,如果通過用戶接口,不管是數(shù)據(jù)表單、窗體還是Access SQL View窗口中的SQL語句,
@@IDENTITY返回值都是0。因此, @@IDENTITY 的值只有在剛剛通過代碼加入了記錄是才是準(zhǔn)確的。
需要注意的是獲取自動編號的命令和插入記錄的命令必須是在同一次打開數(shù)據(jù)庫連接時執(zhí)行否則Select @@Identity 返回為0。也就是說它們必須是在同一個Connection之中。例子代碼下載