關於SQL SERVER裡面獲取自增列的標識值的問題
- 2021-10-01
有一張表,主鍵是自增列,往裡面插入一條資料之後,用select @@identity獲取到剛剛插入的標識的值 但問題是在我插入資料到我select @@identity之間如果我又插入了另一個表(也是子增列主鍵)的資料,我獲取出來的就不是我的之前的那個表的標識列的值了。請問這個是如何解決的?select @@identity根本就沒有指定任何表,以表示獲取的是哪一張表的標識列
用Select IDENT_CURRENT(TableName)
IDENT_CURRENT
返回為任何會話和任何作用域中的指定表最後生成的標識值。
語法
IDENT_CURRENT(‘table_name’)
引數
table_name
是將要返回其標識值的表的名稱。table_name 的資料型別為 varchar,沒有預設值。
返回型別
sql_variant
註釋
IDENT_CURRENT 類似於 Microsoft® SQL Server™ 2000 標識函式 SCOPE_IDENTITY 和 @@IDENTITY。這三個函式都返回最後生成的標識值。但是,它們在定義“最後”的作用域和會話上不同。
IDENT_CURRENT 返回為任何會話和任何作用域中的特定表最後生成的標識值。
@@IDENTITY 返回為當前會話的所有作用域中的任何表最後生成的標識值。
SCOPE_IDENTITY 返回為當前會話和當前作用域中的任何表最後生成的標識值。