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

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

我正在尝试将值插入到具有标识的表中,我知道在插入之前必须使用: SET IDENTITY_INSERT .
我所执行的:

  1. DECLARE @TABLE_NAME NVARCHAR(200), @QUERY NVARCHAR(500)
  2. SET @TABLE_NAME = 'devListaTrabajo'
  3. SET @QUERY = 'SET IDENTITY_INSERT ' + @TABLE_NAME + ' ON'
  4. PRINT @QUERY
  5. EXEC (@QUERY)
  6. INSERT INTO devListaTrabajo
  7. (lisId,lisDescripcion,lisEstado,topId,parCLS,parcod)
  8. VALUES (1,'H',1,1,'H','LH')

我的结果是:

  1. SET IDENTITY_INSERT devListaTrabajo ON
  2. Msg 544, Level 16, State 1, Line 79
  3. 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 变量。

相关问题