10台客户端同时调用1个存储过程向某个表中插入数据并用@@IDENTITY返回ID,会引起混乱吗??每台客户端返回的ID,能保证是自己Insert数据的ID吗??关于@@IDENTITY,帮助中是这样定义的:
@@IDENTITY 和 SCOPE_IDENTITY 将返回在当前会话的所有表中生成的最后一个标识值。但是,SCOPE_IDENTITY 只在当前作用域内返回值,而 @@IDENTITY 不限于特定的作用域。何为"当前会话"?? 是指一个连接吗??
如果"当前会话"是指"当前连接"的话,我认为10台机器返回的ID不会混乱,
因为10台机器是不同的会话.不知道上述观点是否正确,望各位老师指点.
@@IDENTITY 和 SCOPE_IDENTITY 将返回在当前会话的所有表中生成的最后一个标识值。但是,SCOPE_IDENTITY 只在当前作用域内返回值,而 @@IDENTITY 不限于特定的作用域。何为"当前会话"?? 是指一个连接吗??
如果"当前会话"是指"当前连接"的话,我认为10台机器返回的ID不会混乱,
因为10台机器是不同的会话.不知道上述观点是否正确,望各位老师指点.
当前会话--对表操作对象
如:
A表
create table A(id int identity(1,1),name)
create talbe B(id int identity(100,1),name)create trigger test_tr on A
for insert
as
insert B select * from B
A为当前会话对象
@@IDENTITY--返回的是A表唯一标识
SCOPE_IDENTITY--返回的是B表的唯一标识
如增加1条记录
@@IDENTITY=1
SCOPE_IDENTITY=100
create trigger test_tr on A
for insert
as
insert B select * from B
select @@IDENTITY as 'IDENTITY',SCOPE_IDENTITY as 'SCOPE_IDENTITY'