identity_insert 是否在会话关闭时重置为 OFF?
Is identity_insert reset to OFF at session close?
SQL 服务器问题。虽然我的测试说 "yes",但我更愿意听有经验的人说。
当我使用 SET IDENTITY_INSERT some_table ON 时,我想知道我可以安全地关闭我的会话,而不用担心忘记将其设置为关闭,从而在某些方面造成麻烦其他用户。
来自微软:
由于 SET IDENTITY_INSERT 是会话敏感的,因此它在缓冲区级别进行管理而不存储在某处。这意味着我们不需要检查 IDENTITY_INSERT 状态,因为我们在当前会话中从未使用过此关键字。
有什么不明白的地方欢迎追问
谢谢,
金晨 - MSFT
是的。你可以这样测试:
创建测试table 设置标识插入并插入其中。
create table Test (
TestIdentity int identity,
SomeValue char(1)
);
set identity_insert Test ON
insert into Test (
TestIdentity,
SomeValue
) values (
1,
'x'
)
打开新查询并尝试插入 table 而不设置身份插入。它会失败。
insert into Test (
TestIdentity,
SomeValue
) values (
2,
'y'
)
SQL 服务器问题。虽然我的测试说 "yes",但我更愿意听有经验的人说。
当我使用 SET IDENTITY_INSERT some_table ON 时,我想知道我可以安全地关闭我的会话,而不用担心忘记将其设置为关闭,从而在某些方面造成麻烦其他用户。
来自微软:
由于 SET IDENTITY_INSERT 是会话敏感的,因此它在缓冲区级别进行管理而不存储在某处。这意味着我们不需要检查 IDENTITY_INSERT 状态,因为我们在当前会话中从未使用过此关键字。
有什么不明白的地方欢迎追问
谢谢,
金晨 - MSFT
是的。你可以这样测试:
创建测试table 设置标识插入并插入其中。
create table Test (
TestIdentity int identity,
SomeValue char(1)
);
set identity_insert Test ON
insert into Test (
TestIdentity,
SomeValue
) values (
1,
'x'
)
打开新查询并尝试插入 table 而不设置身份插入。它会失败。
insert into Test (
TestIdentity,
SomeValue
) values (
2,
'y'
)