首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >IDENTITY_INSERT设置为OFF -如何将其打开?

IDENTITY_INSERT设置为OFF -如何将其打开?
EN

Stack Overflow用户
提问于 2010-06-25 01:52:27
回答 8查看 464.7K关注 0票数 123

我有一个已删除的文件存档数据库,其中存储了被删除的文件的ID,我希望管理员能够恢复该文件(以及链接文件的相同ID )。我不想将identity_insert从整个表中删除,因为递增1的效果很好。在我的insert to TBL_Content存储过程中,我有如下内容

代码语言:javascript
复制
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
SET IDENTITY_INSERT tbl_content ON
GO

ALTER procedure [dbo].[spInsertDeletedIntoTBLContent]
@ContentID int, 
...insert command...
SET IDENTITY_INSERT tbl_content OFF

但我一直收到相同的错误:

当IDENTITY_INSERT设置为OFF时,

无法为表'TBL_Content‘中的标识列插入显式值。

有什么帮助吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-06-25 01:59:15

您是否应该在存储过程中将identity insert设置为on?看起来您只在更改存储过程时才将其设置为on,而不是在实际调用它时。尝试:

代码语言:javascript
复制
ALTER procedure [dbo].[spInsertDeletedIntoTBLContent]
@ContentID int, 

SET IDENTITY_INSERT tbl_content ON

...insert command...

SET IDENTITY_INSERT tbl_content OFF
GO
票数 194
EN

Stack Overflow用户

发布于 2010-06-25 01:56:25

我认为这需要在单个查询批处理中完成。基本上,GO语句将您的命令分成多个批处理,这就是导致问题的原因。将其更改为:

代码语言:javascript
复制
SET IDENTITY_INSERT tbl_content ON
/* GO */

...insert command...

SET IDENTITY_INSERT tbl_content OFF
GO
票数 17
EN

Stack Overflow用户

发布于 2010-06-25 01:58:41

您不应该将identity_Insert设置为打开,插入记录,然后再将其关闭吗?

如下所示:

代码语言:javascript
复制
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
SET IDENTITY_INSERT tbl_content ON
GO

ALTER procedure [dbo].[spInsertDeletedIntoTBLContent]
@ContentID int, 
SET IDENTITY_INSERT tbl_content ON
...insert command...
SET IDENTITY_INSERT tbl_content OFF
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3112579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档