Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 删除某些行后,继续使用Id顺序值_Sql - Fatal编程技术网

Sql 删除某些行后,继续使用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

我不小心从一个表中删除了一些行,它只有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

我无法手动将标识值更改为旧值。。在这种情况下,哪种解决方案最好?

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

重置自动递增值的方法因数据库而异。例如,在MySQL中,您可以运行:

ALTER TABLE myTable SET AUTO_INCREMENT=1;

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

我最终将identity\u INSERT设置为on,并手动输入带有名称的ID,然后将表更改回identity\u INSERT关闭时的状态。

没有问题。所以,忽略这些差距。这就是
identity
列的工作方式。