插入语句时要求得到标识值的问题
sql2008r2 一个表中有个自动+1的标识字段
现在向这个表插入一个记录,如何确定刚刚插入的这个记录的标识值?
我在网上查了一下,基本都是用 @@IDENTITY 来解决
所以我又查了一下@@IDENTITY的说明,
<可以返回当前会话中的所有表中生成的最后一个标识值>
搞不明白的就是"最后"这两个字的意思
如果多人同时使用数据库,并且有人和我同时执行插入语句,别人执行完毕比我晚那么一点点 @@IDENTITY 是否能100%确定返回的值就是我刚刚执行的插入语句所得到的标识值,而不是网络上别人插入时所得到的?
------解决方案--------------------不一定非要用这个,而且有时候还不能用这个,就比如你那个并发的情况下,可以看看这里:http://blog.csdn.net/dba_huangzj/article/details/7685162
------解决方案--------------------
create table tb
(
id int identity(1,1),
name varchar(255)
)
insert into tb (name)
select 'test' union all
select 'test'
select @@IDENTITY
/*
2
*/
--左后指的是你插入的数据 例如我上面那样 插入了两条 那么返回的是2 就是第二条数据(也是最后一条数据)的标志列值
------解决方案--------------------<可以返回当前会话中的所有表中生成的最后一个标识值>
别人和你同时执行,但是别人和你使用的是两个不同的会话!