MySQLでID番号などに連番を振りたい時に便利な「AUTO_INCREMENT」
投稿日:2018年03月09日
最終更新日:
もくじ
- フィールドに「AUTO_INCREMENT」属性を設定する
- 「AUTO_INCREMENT」属性付きフィールドがあるテーブルへのデータ挿入
- 直前に挿入したデータに割り振られた番号を確認できる SELECT LAST_INSERT_ID()文
フィールドに「AUTO_INCREMENT」属性を設定する
テーブルを作成する時に任意のフィールドに属性を設定する場合は、以下の例のようにフィールド名とフィールドのデータ型を記述した後に属性を書き連ねていきます。複数の属性を設定する時は半角スペースで区切ります。フィールド同士はカンマ(,)で区切ります。AUTO_INCREMENT属性は整数型のデータにしかセットできないのでその点は注意。なお、初期値をセットしたい場合は(デフォルトでは1からスタート)、下の例(AUTO_INCREMENT = 100)のように初期値を指定しましょう。 [mysql] CREATE TABLE database_name.hoge(id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT = 100, hoge TEXT CHARACTER SET utf8, lastdate BIGINT); [/mysql]
テーブル作成後に「AUTO_INCREMENT」属性付きの整数型フィールドを追加したいなどの場合はこちらの記事をご覧ください。
「AUTO_INCREMENT」属性付きフィールドがあるテーブルへのデータ挿入
「AUTO_INCREMENT」属性が付いている整数型フィールドについては、テーブルへのデータ挿入(追加)時に当該フィールドに入力する値を指定しなければ、自動的に適切な連番が割り振られます。よって、基本的には「AUTO_INCREMENT」属性が付いている整数型フィールドに入力する値を指定せずにデータ追加を行います。 [mysql] #「AUTO_INCREMENT」属性付きフィールド(この例ではID)に入力する値は指定しない INSERT INTO database_name.hoge(hoge, lastdate) VALUES (‘Make our Planet great again.’, 20000000); [/mysql]
直前に挿入したデータに割り振られた番号を確認できる SELECT LAST_INSERT_ID()文
場合によっては、データ挿入直後に、挿入したデータに割り振られた番号(整数値)を知りたい場合もあります。そのような場合には、「SELECT LAST_INSERT_ID()」文を使用することになります。ここではPHPからMySQLを使用している場合の例も合わせて示します。
[mysql] #データ挿入 INSERT INTO database_name.hoge(hoge, lastdate) VALUES (‘Make our Planet great again.’, 20000000); #データ挿入直後に以下のSQL文を実行 SELECT LAST_INSERT_ID() #先程挿入したデータに割り振られた連番(整数値)がわかる [/mysql] [PHP] query($sql); /* データ挿入が成功したら以下のプログラムを実行 */ if($result){ $sql = “SELECT LAST_INSERT_ID() as id”; $result2 = $mysqli->query($sql); $rdata = $result2->fetch_assoc(); /* $id に 挿入したデータに割り振られた連番(整数値)が格納される */ $id = $rdata[‘id’]; } ?> [/PHP]
参考リンク