删除一些行后继续ID顺序值

时间:2018-06-28 04:26:12

标签: sql

我不小心从表中删除了一些行,它只有4行,但是现在当我再次尝试插入相同的值时,Id值是不同的,这就像在想起以前删除过的行的ID值每次插入一行时,为Id生成的值都不是现有序列的下一个值。例如:

Id   Name 
1    Peter
2    Luis
3    Charles
4    John

假设我删除了名称值为Peter,Luis,Charles和John的行。当我尝试再次插入相同的名称时,它会插入它们,但是具有不同的ID。

Id   Name
1    Peter
5    Luis
6    Charles
7    John

我不能手动将“身份”值更改为旧值。在这种情况下,哪种解决方案是最好的?

3 个答案:

答案 0 :(得分:0)

原因是自动递增ID不会自动重置。这是设计使然,因为您可能不想删除其他表中的相同值引用(尽管它会创建孤立行)。

重置自动递增值的方法在数据库之间有所不同。例如,在MySQL中,您可以运行:

ALTER TABLE myTable SET AUTO_INCREMENT=1;

答案 1 :(得分:0)

如果您自动增加主键,则无法更改开始的顺序,即使再次插入相同的名称也没关系,它将从先前结束的下一个数字继续。 但是,如果要给它一个数字,则不要自动增加它,就像插入表中的其他值一样,插入主键值。

答案 2 :(得分:0)

我最终将identity_insert设置为on并使用名称手动输入ID,然后将表改回为identity_insert关闭的状态