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値(次に使われる数値)がそれ以上の値に更新される。