为什么我的标识列值从2开始

时间:2018-04-22 06:56:32

标签: sql sql-server

我使用SQL Server创建表并为其插入数据,但为什么open id不是1而是2?

create table test1
(
    id int IDENTITY(1,1),
    name varchar(255),
    age int,
    primary key (id),
    constraint check_age check (age > 0 and age <= 150)
);

以下是显示结果。

select * from test1;

输出:

+----+--------------+-----+
| id |     name     | age |
+----+--------------+-----+
|  2 | shenmeshenqi |  20 |
|  3 | shenmeshenq  |  21 |
+----+--------------+-----+

谁能帮帮我?谢谢

2 个答案:

答案 0 :(得分:0)

以下命令将使下一个插入的标识值为1,之后为2,依此类推,因此2和3将重复。您现在可能只想截断表,因为它看起来像一个测试表。

dbcc checkident (test1, reseed, 0);

此外,您可以打开onidentity insert,然后插入值为1的数据作为id,然后再次关闭身份(如果需要)。

SET IDENTITY_INSERT dbo.Test1 ON
SET IDENTITY_INSERT dbo.Test1 OFF

希望它有所帮助。

答案 1 :(得分:0)

试试这个:

--store values from the table in temporary table
select * into #tempTable from test1
--remove all records from the table
delete test1
--reset identity to start from 1
dbcc checkident (test1, reseed, 0);
--insert data back to the table, now the records will be numbered starting with 1
insert into test1
select * from #tempTable