SET IDENTITY_INSERT 在我的参数里面它不起作用
Posted
技术标签:
【中文标题】SET IDENTITY_INSERT 在我的参数里面它不起作用【英文标题】:SET IDENTITY_INSERT Inside my parameter it does not work 【发布时间】:2020-06-11 02:21:37 【问题描述】:我正在尝试将值插入具有标识的表中,我知道在插入之前必须使用:SET IDENTITY_INSERT
。
我执行了什么:
DECLARE @TABLE_NAME NVARCHAR(200), @QUERY NVARCHAR(500)
SET @TABLE_NAME = 'devListaTrabajo'
SET @QUERY = 'SET IDENTITY_INSERT ' + @TABLE_NAME + ' ON'
PRINT @QUERY
EXEC (@QUERY)
INSERT INTO devListaTrabajo
(lisId,lisDescripcion,lisEstado,topId,parCLS,parcod)
VALUES (1,'H',1,1,'H','LH')
我的结果:
SET IDENTITY_INSERT devListaTrabajo ON
Msg 544, Level 16, State 1, Line 79
Cannot insert explicit value for identity column in table 'devListaTrabajo' when IDENTITY_INSERT is set to OFF.
Result Image
如果你问我为什么不使用不带query inside参数的普通语句,那是因为我打算做一个换表的循环,我打算使用SET IDENTITY_INSERT
。
也许我正在跳过一些使用此语句的 SQL 规则。请,我要求解释或其他替代方法来解决它。
【问题讨论】:
【参考方案1】:EXEC()
命令的内容在与其余代码不同的上下文中运行。该上下文运行、完成,然后您返回到身份插入从未更改过的原始上下文。
如果您想像那样动态地发生这种情况,您必须将整个语句放入@QUERY
变量中。
【讨论】:
另见What is the scope of SET IDENTITY_INSERT xyz ON? 太好了,我已经在查询中包含了插入,它运行完美,谢谢!以上是关于SET IDENTITY_INSERT 在我的参数里面它不起作用的主要内容,如果未能解决你的问题,请参考以下文章
强制 SET IDENTITY_INSERT 从 MS Access 更快生效
IDENTITY_INSERT ON不被实体框架DBSet.Add方法所尊重
SET IDENTITY_INSERT ON|OFF 的解惑