我们知道,许多表的主键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>