我在这里很困惑,我创建了一个表并有 2 列 id 和 name。
现在 id 是主键,而不是 null 和自动递增。
假设我开火:insert into table (name) values('test');
这会给我:
1 | test
现在如果我开火:alter table table_name auto_increment = 5;
这将在下一次插入时用 5 填充 id。
现在,如果我删除 id =5 的值并再次重新插入:insert into table (name) values ('test2');
它给了我:
6 | test2
为什么它不再给我5?
另外,我们不可能在 MySql 中将现有的 auto_increment 值重置为所需的值吗?
我想你会在 MySQL 文档中找到答案:http: //dev.mysql.com/doc/refman/5.5/en/innodb-auto-increment-handling.html
请特别注意“innodb_autoinc_lock_mode”选项/变量如何影响这一点。在 MySQL 5.1+ 中,此变量默认为“1”——在 5.0 及之前为“0”。将其设置为“1”的原因是它在某些情况下提高了复制性能。如果您不使用复制,则没有任何区别,并且在大多数情况下将其设置为“0”应该可以避免自动增量计数器中的“间隙”。
但是没有——也从来没有——任何保证(在 MySQL 或任何 RDBMS 中)auto_increment 值将始终是连续的而没有间隙。auto_increment 值的目的是——而且只是——确保每一行的唯一标识。该值本身并不重要。