【发布时间】:2010-08-19 17:54:20
【问题描述】:
我在mysql中的创建表命令是
CREATE TABLE `map` (
`id` int(4) AUTO_INCREMENT NOT NULL,
`city` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB;
CREATE UNIQUE INDEX `map_city_idx`
ON `map`
(`city`);
初始值,如:
id(1),city('Banda Aceh')
id(2),city('Medan')
下一个插入是 city('Medan'),所以它是错误的,因为 city 列是唯一的。下一个insert是city('Bengkulu'),最终的table结果是
id(1), city('Banda Aceh')
id(2), city('Medan')
id(4), city('Bengkulu')
不是 id(3) 而是 id(4)。那么即使之前有/曾经插入错误,我怎么能保持顺序主键呢?
id(1), city('Banda Aceh')
id(2), city('Medan')
id(3), city('Bengkulu')
【问题讨论】:
-
为什么你需要你的键是连续的?如果/当您无论如何执行删除操作时,您的 id 中都会有“空白”,因此您不应该指望您的键是连续的。