【发布时间】:2016-09-08 22:48:32
【问题描述】:
我有一个表,其中有一堆行,其 ID 是值小于 20,000,000 的数字。表结构如下所示:
CREATE TABLE records(
id int(11) not null AUTO_INCREMENT,
... more data columns ...
) ENGINE=InnoDB AUTO_INCREMENT=16432352 DEFAULT CHARSET=utf8;
我无法控制的系统会在此表中插入行,并且数据库会使用生成的 ID 插入这些记录。
但是,我需要在这个表中插入 ID 非常大的记录(从 50,000,000 开始)。另外,需要注意的是,不受控系统插入的记录很少,这样我要插入的记录永远不会与不受控系统的记录发生冲突。
进行一些测试后,我意识到当我插入具有非常 vig ID 的记录时,AUTO_INCREMENT 值会跳转到那个非常大的 ID。例如:
首先,我检查 initial_auto_increment 值:
SHOW TABLE STATUS FROM my-database like 'records';
... auto_increment 值如下所示:
# Name, ... , Auto_increment, ...
'record', ... , '16432352', ...
接下来,我插入 ID 非常大的记录。
INSERT INTO records (id, ...) VALUES(679456755, ...);
然后,再次检查 auto_increment 值:
SHOW TABLE STATUS FROM my-database like 'records';
..最终结果如下:
# Name, ... , Auto_increment, ...
'record', ... , '679456756', ...
我的问题是:如何暂时禁用 AUTO_ICREMENT 功能,以使我的具有非常大 ID 的记录不会与表的 AUTO_INCREMENT 值混淆?
PS。我正在使用 MariaDB 10。
编辑:我改变了数字,但问题是一样的。
【问题讨论】:
-
你考虑过不使用
AUTO_INCREMENT吗?