InnoDBの挿入に失敗すると、自動インクリメントの主キーにギャップが生じるという事実に慣れていますが、これは無関係です(私には分かりません)。私が抱えている問題は、プライマリキーに5から8までのギャップを持つ自動増分プライマリキーを持つテーブルに5つのレコードを挿入することです。ここで問題を繰り返すスクリプトがあります。INNODBのバルク挿入により、自動インクリメント主キーが値をスキップするのはなぜですか?
DROP TABLE IF EXISTS `test_table`;
CREATE TABLE `test_table` (
`A` int(10) unsigned NOT NULL AUTO_INCREMENT,
`B` int(10) unsigned NOT NULL,
PRIMARY KEY (`A`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
insert into `test_table` (`B`)
SELECT 1
UNION
SELECT 2
UNION
SELECT 3
UNION
SELECT 4
UNION
SELECT 5;
insert into `test_table` (`B`)
SELECT 6
UNION
SELECT 7
UNION
SELECT 8
UNION
SELECT 9
UNION
SELECT 10;
SELECT * FROM `test_table`;
私は両方の列AとBは、このケースで同じになるように、2番目のインサートAの先頭に8になり、Bは6になります期待し、このギャップが発生した理由を誰もが知っていますか?
私はここでドキュメントを見てきました:http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.htmlしかし、これらのロックモードはこのギャップに関係していないようです(何か不足している可能性があります)。何らかの理由