我有一个带有自动增量ID的表,它运行了很多INSERT和DELETE,导致数字存在很大差距。我只是为了整洁而感到疑惑,是否有一个以最低ID开头的查询,将其分配1并从那里开始+1?该ID与数据库中的任何其他列都没有关系。
所以它会来自,例如:
1034 2572 9012
为:
1 2 3
我不想重置自动增量,我知道该怎么做。我实际上是要更改ID。或者这被认为是不好的做法?
感谢。
答案 0 :(得分:3)
我认为这是不好的做法。但是......你可以将你的数据选择到另一个激活了另一个自动增量键的表中,但没有你的id,然后截断你当前的表并将你的数据与新id重新插入......当然,存在丢失的危险数据等,我真的不会这样做。
P.S。您还需要重置串口的当前值。
答案 1 :(得分:1)
虽然这不是一个好习惯,但你可以使用这样的查询:
假设我们有一个包含两个fiels id
和value
的表,其中id
的类型为INT。
insert into table (id, value)
select max(id)+1, 'value' from table
请注意,如果同时运行多个查询,可能会出现大量插入/更新问题。
答案 2 :(得分:0)
;sendStringParametersAsUnicode=false
请注意:如果您使用ID作为外部密钥的参考,那么您就会遇到破坏数据一致性的大问题!