SQL Server 2008:使用 IDENTITY_INSERT 管理标识列插入
在 SQL Server 数据库中,会出现需要手动将值插入标识列的情况。 但是,IDENTITY_INSERT
默认情况下处于禁用状态,无法直接插入。
了解 IDENTITY_INSERT
OFF 错误
尝试将值插入到 IDENTITY_INSERT
设置为 OFF 的标识列中会导致此错误:
当 IDENTITY_INSERT 设置为 OFF 时,无法在表“TableName”中插入标识列的显式值。
这是因为 SQL Server 自动管理唯一标识值。 当 IDENTITY_INSERT
为 OFF 时,数据库期望标识列为空,从而允许它分配下一个连续值。
使用 SQL Server Management Studio (SSMS) 启用 IDENTITY_INSERT
要为 SSMS 中的特定表启用 IDENTITY_INSERT
:
<tablename>
替换为您的表名称:<code class="language-sql">SET IDENTITY_INSERT <tablename> ON;</code>
IDENTITY_INSERT
。直接使用T-SQL
您还可以直接在 T-SQL 中管理 IDENTITY_INSERT
:
<code class="language-sql">SET IDENTITY_INSERT sometableWithIdentity ON; INSERT INTO sometableWithIdentity (IdentityColumn, col2, col3, ...) VALUES (AnIdentityValue, col2value, col3value, ...); SET IDENTITY_INSERT sometableWithIdentity OFF;</code>
详细错误消息
错误消息将指定受影响的表,帮助识别问题。例如:
<code>Cannot insert explicit value for identity column in table 'Baskets' when IDENTITY_INSERT is set to OFF.</code>
通过暂时启用IDENTITY_INSERT
,您可以控制标识列值。 之后始终禁用它以维护数据库完整性和顺序身份生成。
以上是如何在 SQL Server 2008 中启用和禁用 IDENTITY_INSERT 以进行受控标识列插入?的详细内容。更多信息请关注PHP中文网其他相关文章!