MySQLでテーブルをTRUNCATEした後にAUTO_INCREMENTの開始値を任意の値に設定する方法
概要
MySQLでは、テーブルをTRUNCATE(切り捨て)した後、ALTER TABLE文を使うことでAUTO_INCREMENTの開始値を任意の数値に設定できます。本記事では、実際のサンプルコードと実行結果をもとに、その手順をわかりやすく解説します。
1. サンプルテーブルの作成
まず、AUTO_INCREMENT属性を持つカラムを含むテーブルを作成します。
mysql> create table DemoTable825(Value int NOT NULL AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (0.63 sec)
2. レコードの挿入
INSERTコマンドでレコードを追加します。値を指定しない場合は、AUTO_INCREMENTによって連番が自動的に採番されます。
mysql> insert into DemoTable825 values();
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable825 values();
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable825 values();
Query OK, 1 row affected (0.11 sec)
3. レコードの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable825;
実行結果は以下のとおりです。
+-------+
| Value |
+-------+
| 1 |
| 2 |
| 3 |
+-------+
3 rows in set (0.00 sec)
4. テーブルのTRUNCATE
TRUNCATE TABLE文を実行して、テーブル内の全レコードを削除します。
mysql> truncate table DemoTable825;
Query OK, 0 rows affected (0.58 sec)
なお、TRUNCATEはDELETE文と異なり、AUTO_INCREMENTのカウンタもリセットされるという特徴があります。この性質を利用することで、採番をまっさらな状態からやり直せます。
5. AUTO_INCREMENT値の変更
続いて、ALTER TABLE文を使用してAUTO_INCREMENTの開始値を2000に設定します。
mysql> alter table DemoTable825 auto_increment=2000;
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0
6. 変更後の動作確認
もう一度レコードを挿入してみます。
mysql> insert into DemoTable825 values();
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable825 values();
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable825 values();
Query OK, 1 row affected (0.09 sec)
SELECT文で確認すると、以下のように連番が2000から始まっていることがわかります。
+-------+
| Value |
+-------+
| 2000 |
| 2001 |
| 2002 |
+-------+
3 rows in set (0.00 sec)
まとめ
テーブルをTRUNCATEした後に「ALTER TABLE テーブル名 AUTO_INCREMENT = 値;」を実行すれば、AUTO_INCREMENTの開始値を自由に設定できます。テストデータの準備やID採番の調整などに役立つ便利なテクニックなので、ぜひ覚えておきましょう。
-
MySQLでJSON型カラムにデフォルト値を設定する方法
MySQLでは、JSON型のカラムにもデフォルト値を設定できます。その場合は、DEFAULT制約を使用します。基本的な構文は以下の通りです。ALTER TABLE テーブル名 MODIFY COLUMN カラム名 JSON NOT NULL DEFAULT ( JSON_OBJECT() );サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。ここでは demo24 というテーブルを作成します。mysql> create table demo24 -> ( -> employee_information text -> ) ->; Query OK,
-
MySQLのAUTO_INCREMENTとは?自動採番と初期値の設定方法をわかりやすく解説
AUTO_INCREMENT属性の基本MySQLのAUTO_INCREMENT属性は、新しい行に対して一意の識別子(連番)を自動的に生成するために使用されます。カラムが「NOT NULL」として宣言されている場合、そのカラムにNULLを代入することで、連番のシーケンスを生成することが可能です。AUTO_INCREMENTカラムに任意の値を挿入すると、そのカラムは指定した値に設定され、同時にシーケンスもリセットされます。以降は、挿入された最大値を起点として、連続した値が自動的に生成されていきます。また、既存のAUTO_INCREMENTカラムを更新した場合も、AUTO_INCREMENTのシーケ