set-identity\u在我的参数中插入它不起作用

xpszyzbs  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(347)

我正在尝试将值插入到具有标识的表中,我知道在插入之前必须使用: 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.

结果图像
如果您问我为什么不使用没有query inside参数的normal语句,那是因为我计划执行一个表更改的循环,并且我打算使用 SET IDENTITY_INSERT .
也许我跳过了一些sql规则来使用这个语句。拜托,我需要一个解释或者另一个选择来解决这个问题。

mv1qrgav

mv1qrgav1#

文件的内容 EXEC() 命令在与代码其余部分不同的上下文中运行。该上下文将运行、完成并返回到原始上下文,其中标识插入从未更改。
如果您想这样动态地实现这一点,那么必须将整个语句放入 @QUERY 变量。

相关问题