我有一个已删除的文件存档数据库,其中存储了被删除的文件的ID,我希望管理员能够恢复该文件(以及链接文件的相同ID )。我不想将identity_insert从整个表中删除,因为递增1的效果很好。在我的insert to TBL_Content
存储过程中,我有如下内容
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‘中的标识列插入显式值。
有什么帮助吗?
发布于 2010-06-25 01:59:15
您是否应该在存储过程中将identity insert设置为on?看起来您只在更改存储过程时才将其设置为on,而不是在实际调用它时。尝试:
ALTER procedure [dbo].[spInsertDeletedIntoTBLContent]
@ContentID int,
SET IDENTITY_INSERT tbl_content ON
...insert command...
SET IDENTITY_INSERT tbl_content OFF
GO
发布于 2010-06-25 01:56:25
我认为这需要在单个查询批处理中完成。基本上,GO语句将您的命令分成多个批处理,这就是导致问题的原因。将其更改为:
SET IDENTITY_INSERT tbl_content ON
/* GO */
...insert command...
SET IDENTITY_INSERT tbl_content OFF
GO
发布于 2010-06-25 01:58:41
您不应该将identity_Insert设置为打开,插入记录,然后再将其关闭吗?
如下所示:
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
https://stackoverflow.com/questions/3112579
复制相似问题