SET IDENTITY_INSERT 在我的参数中它不起作用

SET IDENTITY_INSERT Inside my parameter it does not work

我正在尝试将值插入到具有标识的 table 中,我知道我必须在插入之前使用: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参数的普通语句,那是因为我打算做一个table改变的循环,我打算使用SET IDENTITY_INSERT.

也许我在使用此语句时跳过了一些 SQL 规则。拜托,我要求解释或其他解决方案。

EXEC() 命令的内容 运行 在与其余代码不同的上下文中。该上下文 运行 完成,您 return 到身份插入从未更改的原始上下文。

如果你想让它像那样动态发生,你必须把整个语句放到@QUERY变量中。