複数の load ステートメントを使用してレコードを挿入するときにプライマリ ID をスキップしないようにするにはどうすればよいですか?
LOAD ステートメントを使用して、150 レコードを含むファイルをテーブルに挿入しました。
挿入後のテーブルの最後のプライマリ ID は 150 です。
ここで、load ステートメントを使用して 100 レコードの別のファイルを挿入すると、最初のレコードに割り当てられるプライマリ ID が 151 ではなく 251 になります。
これらのプライマリ 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」に設定すべきではありませんか?