我正在尝试将值插入到具有标识的表中,我知道在插入之前必须使用: 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规则来使用这个语句。拜托,我需要一个解释或者另一个选择来解决这个问题。
1条答案
按热度按时间mv1qrgav1#
文件的内容
EXEC()
命令在与代码其余部分不同的上下文中运行。该上下文将运行、完成并返回到原始上下文,其中标识插入从未更改。如果您想这样动态地实现这一点,那么必须将整个语句放入
@QUERY
变量。