あなたはそれを想定できません。 IDがシーケンシャルでないシナリオの1つは、レプリケートされたマルチマスターセットアップです。たとえば、このような設定で2台のサーバーが存在する場合、自動IDだけが生成され、その他のIDは奇数IDだけが生成されます(単なる例です)。
あなたの設定がそうでない場合は、はい。少なくともInnoDBのインサートはアトミックであり、同じテーブルをターゲットにするとキューに入れられるため、2つの異なるINSERTからのIDはインターレースされません。重複行を行い、
mysql> CREATE TABLE `ignoreinsert` (
-> `ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
-> `uq` int(10) unsigned NOT NULL,
-> PRIMARY KEY (`ID`),
-> UNIQUE KEY `uq` (`uq`)
->) ENGINE=InnoDB;
Query OK, 0 rows affected (0.19 sec)
mysql> INSERT INTO ignoreinsert VALUES (null,1),(null,2);
Query OK, 2 rows affected (0.10 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM ignoreinsert;
+----+----+
| ID | uq |
+----+----+
| 1 | 1 |
| 2 | 2 |
+----+----+
2 rows in set (0.00 sec)
mysql> INSERT IGNORE INTO ignoreinsert VALUES (null,3),(null,1),(null,4),(null,2),(null,5);
Query OK, 3 rows affected (0.08 sec)
Records: 5 Duplicates: 2 Warnings: 0
mysql> SELECT * FROM ignoreinsert;
+----+----+
| ID | uq |
+----+----+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
+----+----+
5 rows in set (0.00 sec)
方法IGNORE'修飾子 'について:私はINSERT IDの生成をIGNOREテスト方法
(それに頼ることはある...少し危険な、しかし文書化されていませんです)挿入されていてもカウンターを進める?私はこれを尋ねました。なぜなら、 'IGNORE'修飾子のない単一行の' INSERT'文では、行が挿入されていなくても何らかのエラーが発生したときにカウンタがインクリメントされています。 – Mehran
Mehran Ziadloo:私はちょうど確かめるためにチェックをした、そしてIDは連続していた。 – Mchl
私の悪い点は、 'IGNORE'修飾子を使うとカウンタが増加しないということです。それは_duplicate key_エラーが警告に変わる行です。 – Mehran