让我们举个例子:
id (auto_increment) user
1 John
2 Mary
10 Christopher
如何强制查询添加新users
的未使用ids
?:在我们的案例中,从 3 到 9:
您可以通过将要插入的记录的 ID 设置为表的第一个“缺失”ID 值来使用一些巧妙的 SQL 来做到这一点:
INSERT INTO myTable (id, user)
VALUES
(
(SELECT MIN(mt2.id)+1 from myTable mt2 WHERE NOT EXISTS
(SELECT 'Y' from myTable mt3 where mt3.Id = mt2.id + 1)),
'New User Name'
)
您可能无法在一个查询中执行此操作,具体取决于 DBMS。这种方法也几乎使 Id 列成为“自动生成”列无用;此插入始终会找到没有 ID 的最小值,无论它是否是身份生成器会尝试使用的值,并且您几乎总是必须在插入表之前启用“身份插入”,所以永远不会使用此表上的自动生成功能。
那这个呢:
/*!40000 ALTER TABLE `mytable` DISABLE KEYS */;
INSERT INTO `mytable` (`id`,`col1`) VALUES (1,'mydata');
/*!40000 ALTER TABLE `mytable` ENABLE KEYS */;
更简单的国际海事组织。由 MySQL Admin GUI 工具生成。