SET IDENTITY_INSERT XXX ON 的有效范围问题

sunyou 2007-04-28 10:08:51
有个问题请教各位大侠:
当在一个会话中使用SET IDENTITY_INSERT XXX ON 暂停一个表的自增列自增期间,另外一个会话中对该表insert记录时,会不会出错?就是说SET IDENTITY_INSERT XXX ON的作用范围是针对整个表还是仅仅在所在会话中有效?
谢谢!
...全文
528 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
---涛声依旧--- 2007-04-28
  • 打赏
  • 举报
回复
不会影响系统的正常使用
只會影響会话1
rookie_one 2007-04-28
  • 打赏
  • 举报
回复
难道lz你没看到gahade(与君共勉) ( ) 的试验么?
sunyou 2007-04-28
  • 打赏
  • 举报
回复
我的意思是,在会话1中暂停自增期间如果有另外的会话对该表执行insert操作,会不会因为会话1中暂停自增而失败?
因为要对一个正在使用的系统在后台进行一些数据恢复,恢复一个含自增列的表中一些被删除的数据,这样会不会影响系统的正常使用?
肥胖的柠檬 2007-04-28
  • 打赏
  • 举报
回复
当前会话中有效~
gahade 2007-04-28
  • 打赏
  • 举报
回复
create table ttt(id int identity(1,1),name varchar(10))

SET IDENTITY_INSERT ttt ON
insert into ttt(id,name)
select 11,'aa'
/*
(所影响的行数为 1 行)
*/

--开启另外一个进程执行insert
insert into ttt(id,name)
select 50,'aa'
/*
服务器: 消息 544,级别 16,状态 1,行 1
当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'ttt' 中的标识列插入显式值。
*/

drop table ttt

--结论SET IDENTITY_INSERT ON/OFF对当前会话有效
rookie_one 2007-04-28
  • 打赏
  • 举报
回复
SET IDENTITY_INSERT XXX ON
。。。
。。。
SET IDENTITY_INSERT XXX OFF
rookie_one 2007-04-28
  • 打赏
  • 举报
回复



SET IDENTITY_INSERT XXX ON
。。。
。。。
SET IDENTITY_INSERT

在其中有效
gahade 2007-04-28
  • 打赏
  • 举报
回复
当前会话中有效

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧