目录
二、当 IDENTITY_INSERT 设置为 OFF 时,不能为表中的标识列插入显式值
一、mysql 创建库设置中文
CREATE DATABASE `mydb` CHARACTER SET utf8 COLLATE utf8_general_ci;
二、当 IDENTITY_INSERT 设置为 OFF 时,不能为表中的标识列插入显式值
在 SQL Server 中,当您尝试向一个具有 IDENTITY
属性的列插入显式值时,如果 IDENTITY_INSERT
选项没有为该表设置为 ON
,那么您会遇到一个错误,提示您不能为表中的标识列插入显式值。
IDENTITY
属性用于自动为表中的新行生成唯一的、递增的数值。这个属性通常用于主键列,以确保每行都有一个唯一的标识符。
如果您确实需要为 IDENTITY
列插入一个特定的值(例如,在数据迁移或特定测试场景中),您需要首先为表启用 IDENTITY_INSERT
。
1、启用 IDENTITY_INSERT
SET IDENTITY_INSERT YourTableName ON;
2、插入带有显式值的行
INSERT INTO YourTableName (IdentityColumn, OtherColumn1, OtherColumn2, ...)
VALUES (YourExplicitValue, Value1, Value2, ...);
3、禁用 IDENTITY_INSERT
在插入完所需的数据后,您应该立即禁用 IDENTITY_INSERT
,以避免后续插入操作中的不必要错误
SET IDENTITY_INSERT YourTableName OFF;
4、注意:
IDENTITY_INSERT
必须针对每个会话单独设置。如果您在一个会话中启用了它,并在另一个会话中尝试插入,那么第二个会话将不会继承这个设置。- 只有在
IDENTITY_INSERT
为ON
的情况下,您才能为IDENTITY
列插入显式值。否则,SQL Server 将尝试为该列生成一个值,并忽略您提供的任何值。 - 当
IDENTITY_INSERT
为ON
时,您必须为IDENTITY
列提供一个值。如果不提供值,或者提供的值为NULL
(如果允许的话),那么您会遇到一个错误。 - 启用
IDENTITY_INSERT
可能会影响性能,因为它会改变 SQL Server 处理插入操作的方式。因此,在不再需要时,最好尽快禁用它。