第一種方法:
select IDENT_CURRENT('table_name') --返回為任何會話和任何作用域中的特定表最后生成的標識值,它不受作用域和會話的限制,而受限於所指定的表
insert into table_name values(colvalue1,colvalue2) ; select ident_current('table_name ')
第二種方法:
select @@IDENTITY --返回為當前會話的所有作用域中的任何表最后生成的標識值。
insert into table_name values(colvalue1,colvalue2) ; select @@identity
第三種方法:
select SCOPE_IDENTITY() --返回為當前會話和當前作用域中的任何表最后生成的標識值。
INSERT INTO table_name values(colvalue1,colvalue2); select scope_identity();
備注:SCOPE_IDENTITY 和 @@IDENTITY 返回在當前會話中的任何表內所生成的最后一個標識值。但是,SCOPE_IDENTITY 只返回插入到當前作用域中的值;@@IDENTITY 不受限於特定的作用域
前三種方法都是返回numeric類型結果,對於非numeric類型的id無效,如GUID,若要獲取這樣類型的ID,則可以使用下面的方法
第四種方法:
MSSQL2005以后新增了一個output,用來輸入某個值,此方法不限類型
要輸入的字段inserted.id一定要放在 values之前,不能放在sql語句的最后面,不然是出錯的,inserted是固定的,你想輸入當前插入的某個字段就在后面接這個字段即可
insert into table_name(col1,col2) output inserted.col1 values(colvalue1,colvalue2);