第一种方法:

  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);

 

posted on 2021-05-24 16:01  幻影迷踪  阅读(1162)  评论(0编辑  收藏  举报