在我的表中有列名id,它是自动增量整数。当我截断表然后尝试执行插入查询时,它从1开始,但是如果我执行删除操作然后尝试插入那么它只是从之前的值恢复。为什么insert查询对delete和truncate的执行方式不同。如果表中没有条目,它应该始终从1开始。
答案 0 :(得分:1)
自动增量功能的当前最大值存储在表定义中(运行show create table idle
时可以看到它)。
从表中删除所有行时,自动增量值将保持不变。截断表时,基本上会删除表并重新创建表,这会将自动增量值重置为0.
希望这会有所帮助。
答案 1 :(得分:1)
我认为您即将重置自动增量,在delete
查询后运行此查询:
ALTER TABLE tablename AUTO_INCREMENT = 1 ;
注意:注意重复键,如果删除了一些ID并将id重置为1,而id = 2或n则存在!
中提到的其他一些行动和说明请注意,您无法将计数器重置为小于或等于任何已使用的值。对于MyISAM,如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前最大值加1。对于InnoDB,如果该值小于列中的当前最大值,则不会发生错误,并且不会更改当前序列值。
答案 2 :(得分:0)
你在AUTO INCREMENT
中给出id
这就是为什么它的行为就像这样。每当你在删除操作的情况下截断其重置身份时,它从你的id的最后一个值开始。如果不希望此行为,请从AUTO INCREMENT
字段中删除id
索引。