INSERT INTO没有列名,输出插入

本文关键字:输出 插入 INTO INSERT | 更新日期: 2023-09-27 18:06:34

我想创建一个SQL语句,它将复制给定的记录并返回插入的ID,例如:

INSERT INTO DF_FILES
OUTPUT INSERTED.TableID
SELECT *
FROM DF_FILES
WHERE DOC = "myFile.txt"

然后我尝试使用以下命令捕获ID:

Int32 t_ID = (Int32)command.ExecuteScalar();

当我通过c# SqlCommand运行语句时,我得到以下错误消息:

表'DF_FILES'中标识列的显式值只能在使用列列表且IDENTITY_INSERT为ON时指定。

是否有获得新创建记录的ID的解决方案?

谢谢,达林

INSERT INTO没有列名,输出插入

"INSERT INTO without column names"仅在以完全相同的顺序为表中的所有列插入值时有效。

在这种情况下,因为TableID似乎有IDENTITY_INSERT打开了,这意味着列的值在计算每一行基于身份的状态,因此你不能只是插入一个新的值到它。如果你列出DF_FILES表中没有TableID的所有列,并尝试插入,你可能能够解决这个问题。

  INSERT INTO DF_FILES (col1, col2 , col3 ...)
  OUTPUT INSERTED.TableID
  SELECT col1, col2 , col3 ...
  FROM DF_FILES
  WHERE DOC = "myFile.txt"