📜  如何在 SQL 中重置标识列值

📅  最后修改于: 2022-05-13 01:54:34.760000             🧑  作者: Mango

如何在 SQL 中重置标识列值

什么是“身份栏”?

表的标识列是值自动增加的列。用户通常无法在标识列中插入值。一张表只能有一个用身份属性定义的列。

句法 :

IDENTITY [ ( seed , increment ) ]

身份的默认值为 IDENTITY (1,1)。

种子:种子代表一个ID的起始值,种子的默认值为1。

Increment:表示ID的增量值,增量默认值为1。



例如 :

步骤 1:创建一个名为 school 的表。

CREATE TABLE school (
student_id INT IDENTITY,
student_name VARCHAR(200),
marks INT
);

这里,表的 'student_id' 列从 1 开始,因为种子的默认值是 1,每行增加 1。

第 2 步:在表中插入一些值。

INSERT INTO school (student_name, marks) VALUES ('Sahil', 100);
INSERT INTO school (student_name, marks) VALUES ('Raj', 78);
INSERT INTO school (student_name, marks) VALUES ('Navneet', 80);
INSERT INTO school (student_name, marks) VALUES ('Rahul', 75);
INSERT INTO school (student_name, marks) VALUES ('Sudeep', 82);
INSERT INTO school (student_name, marks) VALUES ('Azaan', 75);

第 3 步:要查看表 'school' 中的记录,我们可以使用以下代码:

SELECT * FROM school;

输出 :

student_idstudent_namemarks
1Sahil100
2Raj78
3Navneet80
4Rahul75
5Sudeep82
6Azaan75

第 4 步:让我们删除一条记录。

DELETE FROM school WHERE student_id = 4;

第五步:查看表中的记录。



SELECT * FROM school;

输出 :

student_idstudent_namemarks
1Sahil100
2Raj78
3Navneet80
5Sudeep82
6Azaan75

现在,您可以看到 student_id 列未按顺序排列,因此您必须重置 Identity 列。

使用 DBCC CHECKIDENT 方法重置标识值:

在这里,要重置 SQL Server 中的标识列列,您可以使用 DBCC CHECKIDENT 方法。

句法 :

DBCC CHECKIDENT ('table_name', RESEED, new_value);

注意:如果我们重置表中的现有记录并插入新记录,则会显示错误。

所以,我们需要:

  • 创建一个新表作为主表(即学校)的备份。
  • 删除主表中的所有数据。
  • 现在重置身份列。
  • 将备份表中的所有数据重新插入到主表中。

第 6 步:创建名为 'new_school' 的备份表。

CREATE TABLE new_school AS SELECT student_id, student_name, marks FROM school;

第 7 步:删除学校的所有数据。

DELETE FROM school;

步骤 8:重置身份列。

DBCC CHECKIDENT ('school', RESEED, 0);

步骤9:将备份表中的所有数据重新插入到主表中。

INSERT INTO school (student_name, marks) SELECT student_name, marks FROM new_school ORDER BY student_id ASC;

步骤10:查看表的记录。

SELECT * FROM school;

输出 :

student_idstudent_namemarks
1Sahil100
2Raj78
3Navneet80
4Sudeep82
5Azaan75

这是在 SQL 中重置标识列值的方法。