📜  identity_insert 设置为关闭 - SQL (1)

📅  最后修改于: 2023-12-03 14:42:03.071000             🧑  作者: Mango

Identity_Insert 设置为关闭 - SQL

Introduction

在 SQL Server 中,如果要向带有自增列(identity column)的表中插入数据,需要使用 SET IDENTITY_INSERT ON 来开启自增列插入。但是一旦插入完成,就需要使用 SET IDENTITY_INSERT OFF 来关闭自增列插入。本篇文章将介绍 IDENTITY_INSERT 关闭的使用方法。

Syntax
SET IDENTITY_INSERT table_name OFF;
  • table_name: 要关闭自增列插入的表名。
Example

以下示例展示如何关闭自增列插入功能。

首先创建一个带有自增列的表。

CREATE TABLE dbo.Person
(
    ID INT IDENTITY(1,1),
    Name VARCHAR(50)
);

接着插入一条数据。

INSERT INTO dbo.Person(Name) VALUES ('John');

如果未使用 SET IDENTITY_INSERT 来开启自增列插入,插入数据时会出现以下错误。

Cannot insert explicit value for identity column in table 'Person' when IDENTITY_INSERT is set to OFF.

为了避免这个错误,需要使用以下语句开启自增列插入。

SET IDENTITY_INSERT dbo.Person ON;

然后插入带有指定 ID 的数据。

INSERT INTO dbo.Person(ID, Name) VALUES (2, 'Jane');

完成插入后,需要使用以下语句关闭自增列插入。

SET IDENTITY_INSERT dbo.Person OFF;

现在可以插入不带有指定 ID 的数据了。

INSERT INTO dbo.Person(Name) VALUES ('Joe');
Conclusion

IDENTITY_INSERT 可以关闭自增列插入功能,从而使得可以插入带有指定 ID 的数据。但是在插入完成之后,务必要使用 SET IDENTITY_INSERT OFF 来关闭自增列插入,否则可能会出现错误。