SET IDENTITY_INSERT的范围是多少?
如果我在某个表的一个存储过程中使用它,如果不同的用户运行不同的过程会在同一时间插入到该表中会怎么样?
另外,如果不同的用户/程序尝试设置SET IDENTITY_INSERT xyz,会发生什么
同时为不同的桌子?
解决方法
这是一个会话选项,一个表只能为任何一个表选择一个表,但是多个不同的会话可以在同一个表上使用它(不知道这永远是个好主意!
当子批次完成(设置此选项)时,它看起来像为连接自动取消设置.
CREATE TABLE Tst (C INT IDENTITY(1,1)) EXEC('SET IDENTITY_INSERT Tst ON') INSERT INTO Tst(C) VALUES (1) /*Fails - Complains IDENTITY_INSERT is off*/ SET IDENTITY_INSERT Tst ON EXEC('INSERT INTO Tst(C) VALUES (1)') /*Succeeds this way round*/ SET IDENTITY_INSERT Tst OFF