【发布时间】:2019-05-09 21:42:39
【问题描述】:
以下脚本执行失败
SET IDENTITY_INSERT dbo.MyTable ON
-- the table only has three columns, so there's no ambiguity
INSERT INTO dbo.MyTable
VALUES (1, 2, 3)
SET IDENTITY_INSERT OFF
这会引发以下警告:
表“dbo.MyTable”中标识列的显式值 只能在使用列列表并且 IDENTITY_INSERT 时指定 已开启。
当列明确时,脚本会按预期执行。
SET IDENTITY_INSERT dbo.MyTable ON
INSERT INTO dbo.MyTable (ColA, ColB, ColC)
VALUES (1, 2, 3)
SET IDENTITY_INSERT OFF
为什么必须使用列列表?
【问题讨论】:
-
您必须为您的 INSERT 语句制作一个列列表,而不是像“INSERT Into tableA Values ()”
-
你问了“为什么”,然后接受了一个不涵盖该问题的重复问题,所以我不知道你的预期问题是什么
-
问微软为什么让产品以某种方式工作并不总能得到有意义的答案:)
-
只是猜测,但是。考虑像@987654323@ 这样的表和像
insert into t values (1,2)这样的(合法)语句。如果 IDENTITY_INSERT 为 ON,列映射是否应该更改?
标签: sql sql-server database ssms identity-insert