第一种方法:
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);