首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

10台客户端同时调用1个存储过程向某个表中插入数据并用@@IDENTITY返回ID,会引起混乱吗?解决办法

2012-02-02 
10台客户端同时调用1个存储过程向某个表中插入数据并用@@IDENTITY返回ID,会引起混乱吗??10台客户端同时调

10台客户端同时调用1个存储过程向某个表中插入数据并用@@IDENTITY返回ID,会引起混乱吗??
10台客户端同时调用1个存储过程向某个表中插入数据并用@@IDENTITY返回ID,会引起混乱吗??

每台客户端返回的ID,能保证是自己Insert数据的ID吗??

关于@@IDENTITY,帮助中是这样定义的:
@@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

热点排行