【发布时间】:2012-06-14 12:00:04
【问题描述】:
如何避免通过多个load语句插入记录时跳过primary id?
我通过 LOAD 语句将一个包含 150 条记录的文件插入到一个表中。
插入后表中最后一个primary id是150。
现在,当我通过 load 语句插入另一个包含 100 条记录的文件时,分配给第一条记录的主 ID 是 251 而不是 151。
如何避免这些主要 id 浪费?
更多信息: 例如:
mysql> desc test_data;
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | UNI | NULL | |
| image | varchar(255) | NO | | NULL | |
| created_at | datetime | NO | | NULL | |
+------------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
我的加载语句 -
LOAD DATA LOCAL INFILE '~/test_2.dat'
INTO TABLE test_data
FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\n'
set created_at=CURRENT_TIMESTAMP;
文件test_2.dat中的样本数据:
|Peter|peter.jpg
|sam|sam.jpg
|radnor|radnor.jpg
|bruce|bruce.jpg
这是加载该文件后的表结构。
mysql> show create table test_data;
| test_data | CREATE TABLE `test_data` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`image` varchar(255) NOT NULL,
`created_at` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1 |
现在,此表中的 max(id) 为 4。但为什么 AUTO_INCREMENT 值现在设置为“8”?不应该设置为“5”吗?
【问题讨论】:
-
您能否详细说明一下。
-
我的朋友,你把自己弄复杂了,你不使用自动增量吗?
标签: mysql load auto-increment