为什么在IDENTITY_INSERT ON时必须指定列?

时间:2019-05-09 21:42:39

标签: sql sql-server database ssms identity-insert

以下脚本执行失败

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列的显式值   只能在使用列列表并且IDENTITY_INSERT时指定   开启。

列明确时,脚本将按预期执行。

SET IDENTITY_INSERT dbo.MyTable ON

INSERT INTO dbo.MyTable (ColA, ColB, ColC)
VALUES (1, 2, 3)

SET IDENTITY_INSERT OFF

为什么要使用列列表?

1 个答案:

答案 0 :(得分:1)

安全性。这样可以确保您确实指定了id列,否则,如果错误地将IDENTITY_INSERT ON设置为ON,则可能会使您的表混乱很多。