天天看点

Sql Server中如何取得刚刚插入的自增长的id值

我们知道,许多表的主键id是自增的,那么我们需要拿到插入过后那个插入的那条记录的id怎么办?

我们先看网上这样一种办法:

测试:

1.新建一个表  tblindedity

  create table [tblindedity] (

     [id] [int] identity (1, 1) not null ,

     [name] [char] (10) collate chinese_prc_ci_as null

     ) on [primary]

  go

2.插入3条数据

  insert into tblindedity values('dong')

  insert into tblindedity values('chao')

  insert into tblindedity values('hui')

3.用这个函数测试一下

  print ident_current('tblindedity')

4.结果:3

我们有三种方法得到最新的id

select @@identity

select scope_identity()

select ident_current("tablename")

那么这三个方法有什么区别呢?

ident_current返回为任何会话和任何作用域中的特定表最后生成的标识值。ident_current 不受作用域和会话的限制,而受限于指定的表。ident_current 返回为任何会话和作用域中的特定表所生成的值。

@@identity 返回为当前会话的所有作用域中的任何表最后生成的标识值。

scope_identity 返回为当前会话和当前作用域中的任何表最后生成的标识值

scope_identity 和 @@identity 返回在当前会话中的任何表内所生成的最后一个标识值。但是,scope_identity 只返回插入到当前作用域中的值;@@identity 不受限于特定的作用域。

如果使用linq插入的话,获得这个id会简单一些,请参看本博客《linq to sql插入操作取回自增的id》

<a href="http://blog.csdn.net/woshixuye/article/details/7089520">http://blog.csdn.net/woshixuye/article/details/7089520</a>