MySQL AUTO_INCREMENTテーブルにIDを指定してデータをINSERT

MySQLデータベースで、PRIMARY KEYであるID列にAUTO_INCREMENTが設定されている。
このテーブルにIDを指定してデータを挿入することができるのか?
答えは「できる」だ。

では、実演。

実演の準備

まず、テーブルを作成する。
ID列にAUTO_INCREMENTを指定し、PRIMARY KEYを設定する。

次にデータを3行INSERTする。

SELECTしてINSERTの結果を確認する。
きちんと3行あり、ID1、2、3があることが確認できる。

この時のAUTO_INCREMENT値(次に使われる数値)を確認すると「4」となっている。

次にID=2のデータを削除し、歯抜け状態にする。

すぐさま3行追加する。

SELECTしてテーブルのデータを確認してみよう。
最初に3行挿入して1行削除し、追加で3行挿入したから5行あるはずだ。
ID=2のデータを削除したからそれがないこともわかる。

ちなみに、この時のAUTO_INCREMENT値(次に使われる数値)を確認すると「7」となっている。

IDを指定してデータを挿入する

INSERT文 IDに「2」を指定して実行する。

SELECTして結果を見てみる。
ID=2のデータがあることがわかる。当然だが、最初のID=2のデータとはpost_dateの値が違う。

AUTO_INCREMENT値(次に使われる数値)は「7」のままだ。

続けて、ID=100のデータを挿入したらどうなるか

ここでは、AUTO_INCREMENT値(次に使われる数値)は「7」だ。
IDが100のデータを挿入したらどうなるのだろうか。

もちろん、INSERTはできる。
SELECTしてテーブルを確認するとこうなっている。
当然の結果だ。

AUTO_INCREMENT値(次に使われる数値)はどうなっているかもうわかるだろう。
「101」だ。

まとめ

AUTO_INCREMENTが設定されていても、IDを指定してデータをINSERTできる。
テーブルにあるデータよりも大きなAUTO_INCREMENTを指定すると、AUTO_INCREMENT値(次に使われる数値)がそれ以上の値に更新される。