是否有可能某个表的id高于当前的自动增量值?
我有一张排着队的桌子。我每秒插入/删除10-30行,需要自动递增列才能继续。当我现在插入行时,我得到一个循环自动增量(id),例如:374097
这是桌子:

CREATE TABLE `test_table` (
    `id` INT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (`id`)
COLLATE='utf8_bin'
ENGINE=InnoDB
AUTO_INCREMENT=374098;

还有一个表使用这个id作为外键。
SELECT max(batch_id) from secondary_table;

返回:397959。在某个时刻,test_表的id高达397959,而AUTO_增量则低得多!
我在https://dev.mysql.com/doc/refman/8.0/en/replication-features-auto-increment.html上读到了这篇文章,我应该是安全的——AUTO_INCREMENT设置在一个简单的主键上。
你知道我是否可以继续使用这样的自动增量,或者我需要使用一个自己提供的ID吗?

最佳答案

可以保持自动递增:只需将第一个表上的自动递增值更新为最大值+1

ALTER TABLE test_table AUTO_INCREMENT = 397959 + 1

关于mysql - 自动增量值落后/低于实际值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52035616/

10-16 15:12