Sql server 标识插入

Sql server 标识插入,sql-server,Sql Server,任何人都可以解释一下,设置标识插入开关的作用是什么 谢谢, 克里斯在 允许在表的标识列中插入显式值。chrisprat,到目前为止,您已经注册了一周,您的所有活动都是问五个问题,Google或MSDN很容易回答 怎么了?假设您有一个带有自动递增/标识列的表。在执行插入操作时,通常不能为此列指定值,因为它是自动填充的 但是,如果先调用SET IDENTITY\u INSERT your table ON,则可以在IDENTITY列中插入特定值 我在手动合并表时最常使用它——我从未在定期执行的代码块

任何人都可以解释一下,设置标识插入开关的作用是什么

谢谢, 克里斯


允许在表的标识列中插入显式值。

chrisprat,到目前为止,您已经注册了一周,您的所有活动都是问五个问题,Google或MSDN很容易回答


怎么了?

假设您有一个带有自动递增/标识列的表。在执行插入操作时,通常不能为此列指定值,因为它是自动填充的

但是,如果先调用
SET IDENTITY\u INSERT your table ON
,则可以在IDENTITY列中插入特定值

我在手动合并表时最常使用它——我从未在定期执行的代码块中使用过它


还请注意,您一次只能在一张表上指定此选项。

Michael Haren已经给了您答案,但我想进一步说明。使用此命令非常危险,除非在极少数情况下,否则不应使用此命令。当您使用它时,自动编号不再适用于任何人,因此将记录正常插入数据库的所有代码都将失败。因此,应尽可能在单用户模式下进行,或至少在非工作时间进行。不应定期插入记录,而应仅用于将一个表中的数据合并到数据库重新设计中的新结构中。如果在使用此命令时不知道自己在做什么,可能会严重破坏数据库的数据完整性

-1这个问题在F1键的末尾。实际上是设置标识插入[tablename]开/关。实际上@NeilBarnwell是设置标识插入[tablename]开/关公平点。我应该更清楚地指出,我所指出的是它是每个表的,因此需要table name参数。我差不多有10年没有人注意到我的打字错误。哦,好吧。@ceejayoz-我想知道你为什么觉得有必要变得粗鲁。这是不必要的,也不有趣的,它给我们带来了什么?显然,stackoverflow对chrisprat来说比谷歌更好,如果他是在这里先问问题的话?其他人可以自由地不回答,因为他们也可以在什么都没打开的情况下自由地打开电视。