我不小心从表中删除了一些行,它只有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
我不能手动将“身份”值更改为旧值。在这种情况下,哪种解决方案是最好的?
答案 0 :(得分:0)
原因是自动递增ID不会自动重置。这是设计使然,因为您可能不想删除其他表中的相同值引用(尽管它会创建孤立行)。
重置自动递增值的方法在数据库之间有所不同。例如,在MySQL中,您可以运行:
ALTER TABLE myTable SET AUTO_INCREMENT=1;
答案 1 :(得分:0)
如果您自动增加主键,则无法更改开始的顺序,即使再次插入相同的名称也没关系,它将从先前结束的下一个数字继续。 但是,如果要给它一个数字,则不要自动增加它,就像插入表中的其他值一样,插入主键值。
答案 2 :(得分:0)
我最终将identity_insert设置为on并使用名称手动输入ID,然后将表改回为identity_insert关闭的状态