如何在 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_id student_name marks 1 Sahil 100 2 Raj 78 3 Navneet 80 4 Rahul 75 5 Sudeep 82 6 Azaan 75
第 4 步:让我们删除一条记录。
DELETE FROM school WHERE student_id = 4;
第五步:查看表中的记录。
SELECT * FROM school;
输出 :student_id student_name marks 1 Sahil 100 2 Raj 78 3 Navneet 80 5 Sudeep 82 6 Azaan 75
现在,您可以看到 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_id student_name marks 1 Sahil 100 2 Raj 78 3 Navneet 80 4 Sudeep 82 5 Azaan 75
这是在 SQL 中重置标识列值的方法。