在SQL Server中将Identity设置为on或off

15 sql sql-server sql-server-2005 sql-server-2008

我想将列的Is Identity属性设置为off,并在插入显式值后再将其设置为on.我写了这个查询:

SET IDENTITY_INSERT Tbl_Cartoons OFF
Run Code Online (Sandbox Code Playgroud)

尽管它成功执行,但表设计中没有任何变化.请提出解决方案,这非常重要.

Dam*_*ver 28

SET IDENTITY_INSERT Tbl_Cartoons ON在尝试插入显式值之前,您实际上想要使用.

你说" 将负责在IDENTITY列中插入值".

SET IDENTITY_INSERT Tbl_Cartoons OFF说:"我会让系统负责将值插入IDENTITY列中".


小智 15

要将显式值插入标识列,请执行以下操作:

SET IDENTITY_INSERT Tbl_Cartoons  ON
GO

-- code to insert explicit ID values

SET IDENTITY_INSERT Tbl_Cartoons  OFF
GO
Run Code Online (Sandbox Code Playgroud)


Jon*_*ton 7

您给出的所有行都是禁用标识,以便您可以将特定值插入标识列 - 通常这需要一次性使用,例如移动数据.专栏仍然存在于该专栏中,它只是没有被采取行动.从概念上讲,这类似于禁用和删除触发器之间的区别.

要完全从列中删除标识更难.问题涵盖了它,但基本思想是你必须创建一个新列,复制数据,然后删除标识列.


And*_*mar 7

设置的会话SET IDENTITY_INSERT允许输入显式值.

但该列仍然是一个标识列.只是您的会话可以忽略身份约束.