Sql 删除某些行后,继续使用Id顺序值
我不小心从一个表中删除了一些行,它只有4行,但是现在当我再次尝试插入相同的值时,Id值是不同的,就像它记住了我以前删除的行的Id值一样,现在每次我插入一行时,为Id生成的值不是现有序列的下一个值。。。例如:Sql 删除某些行后,继续使用Id顺序值,sql,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 L
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
我无法手动将标识值更改为旧值。。在这种情况下,哪种解决方案最好?原因是自动递增Id不会自动重置。这是出于设计,因为您可能在其他表中有相同的值引用,您可能不想删除这些值(尽管它会创建孤立行) 重置自动递增值的方法因数据库而异。例如,在MySQL中,您可以运行:
ALTER TABLE myTable SET AUTO_INCREMENT=1;
如果自动递增主键,则无法更改开始的顺序。即使再次插入相同的名称,也无所谓。它将从先前结束的下一个数字继续。
但是如果你想给它一个数字,那么不要自动递增它,像在表中插入的其他值一样插入主键值。我最终将identity\u INSERT设置为on,并手动输入带有名称的ID,然后将表更改回identity\u INSERT关闭时的状态。没有问题。所以,忽略这些差距。这就是
identity
列的工作方式。