是否可以在 SELECT 语句中为 INSERT 语句指定列列表?



我必须生成一个动态生成的 T-SQL 脚本,该脚本将记录插入到各种表中。 我已经做了一堆搜索和测试,但似乎找不到我正在寻找的路径。

我知道以下是有效的 SQL:

INSERT INTO [MyTable] ( [Col1], [Col2], [Col3] )
SELECT N'Val1', N'Val2', N'Val3';

但是,是否有可能写出类似这样的东西:

INSERT INTO [MyTable]
SELECT [Col1] = N'Val1', [Col2] = N'Val2', [Col3] = N'Val3';

通过在 select 语句中设置列,我可以一次完成所有操作,而不是编写 2 行单独的行。 显然我的想法行不通,我试图弄清楚类似的事情是否可能,或者我需要坚持第一个。

非常感谢。

insert语句的最佳做法是在insert子句中指定列列表,并且出于很好的理由:

  1. 它的可读性要高得多。您确切地知道什么值进入了哪一列。
  2. 不必
  3. 向可为 null \ 默认值的列提供值。
  4. 您不受表中列顺序的约束。
  5. 如果将列添加到表中,则 insert 语句可能不会中断(如果新添加的列不可为空且没有默认值,则不会中断(。
  6. 在某些情况下,SQL Server 会要求您显式指定列列表,例如当identity_insert设置为on时。

在任何情况下,insert...select语句的select子句中的列名或别名对值列应转到的目标列没有任何影响。 值仅根据其在语句中的位置定向到目标。

最新更新