我有在 MySQL 3.23.23 时创建的代码当时 MySQL AUTO_INCREMENT 重用了最小的已发布 AUTO_INCREMENT 值。
它可以生成 100、101、102、103、
删除 101
101、104、105 _
我们使用特殊的表来生成 ID,通过 LOCKING 表,UPDATE IDTABLE SET id = id + 1 WHERE key = 'table_name'; SELECT id ... ; UNLOCK;
根据mysql docs,不再需要这样的额外表。但是依靠 MySQL AUTO_INCREMENT 有多可靠呢?
AUTO_INCREMENT 行为存储引擎是特定的吗?它在 SQL 规范中有描述吗?
这些 ID 非常重要,即使旧记录被删除,它们也必须增加并且是唯一的。(如购物车软件中的订单号)
可能是卡兰坎所说的问题
插入100、101、102、103、104
删除104
插入104 , 105, 106
10 年前,我们在 MySQL 中肯定有某种关于 AUTO_INCREMENT 的错误。我们可以删除所有记录,但 AUTO_INCREMENT 必须保留。
这就是我问这个的原因。