MySQLでテーブルの主キー(AUTO_INCREMENT)をリセットする方法
テーブルの主キーを「リセットする」とは、AUTO_INCREMENT のカウンタ値を 1 に戻すことを意味します。MySQLでは ALTER TABLE 文を使うことで簡単に実行できます。
主キー(AUTO_INCREMENT)をリセットする基本構文
ALTER TABLE テーブル名 AUTO_INCREMENT = 1;
この一文だけで、次に挿入されるレコードのIDが再び1から採番されるようになります。以下、実際の手順をサンプルとともに見ていきましょう。
1. サンプルテーブルを作成する
まず、自動採番の主キーを持つテーブルを作成します。
mysql> CREATE TABLE ResetPrimaryKey -> ( -> Id int auto_increment, -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (0.59 sec)
2. テストデータを挿入する
IDを指定せずに複数件のレコードを挿入します。
mysql> INSERT INTO ResetPrimaryKey VALUES(); Query OK, 1 row affected (0.18 sec) mysql> INSERT INTO ResetPrimaryKey VALUES(); Query OK, 1 row affected (0.15 sec) mysql> INSERT INTO ResetPrimaryKey VALUES(); Query OK, 1 row affected (0.09 sec) mysql> INSERT INTO ResetPrimaryKey VALUES(); Query OK, 1 row affected (0.09 sec)
3. 現在のデータを確認する
SELECT 文で登録内容を確認してみましょう。
mysql> SELECT * FROM ResetPrimaryKey;
出力結果は以下の通りです。主キーである Id 列だけが表示されます。
+----+ | Id | +----+ | 1 | | 2 | | 3 | | 4 | +----+ 4 rows in set (0.00 sec)
4. ALTER TABLEでAUTO_INCREMENTをリセットする
ここで本題のリセット処理です。ALTER TABLE を使って AUTO_INCREMENT を1に設定します。
mysql> ALTER TABLE ResetPrimaryKey AUTO_INCREMENT = 1; Query OK, 0 rows affected (0.21 sec) Records: 0 Duplicates: 0 Warnings: 0
5. 設定が反映されたか確認する
DESC 文でテーブル構造を確認し、auto_increment プロパティが正しく設定されているかチェックしましょう。
mysql> DESC ResetPrimaryKey;
出力結果:
+-------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | +-------+---------+------+-----+---------+----------------+ 1 row in set (0.11 sec)
Extra 列に auto_increment と表示されており、Key 列が PRI(主キー)になっていることが確認できました。
注意点:既存データがある場合の挙動
AUTO_INCREMENT = 1 を指定しても、テーブル内にその値以上のIDを持つレコードが残っている場合、MySQLは自動的に「最大ID + 1」を採番します。つまり、既存データを消さずにIDを振り直すことはできません。
テーブルの中身を完全に空にしてIDを1から振り直したい場合は、以下のように TRUNCATE TABLE を使うのが確実です。
TRUNCATE TABLE ResetPrimaryKey;
TRUNCATE は全行を削除すると同時に AUTO_INCREMENT カウンタも初期化してくれるため、開発・テスト環境でのデータリセットに便利です。
まとめ
- 主キーのリセット=
AUTO_INCREMENT値を1に戻すこと。 ALTER TABLE テーブル名 AUTO_INCREMENT = 1;で変更可能。- 既存レコードが残っている場合は最大ID+1から採番されるため注意。
- 全データ削除と同時に初期化したいなら
TRUNCATE TABLEがおすすめ。
-
MySQLで主キー(AUTO_INCREMENT)をリセットする方法
MySQLで主キー(AUTO_INCREMENT)の値をリセットするには、まずTRUNCATE TABLEでテーブルを空にし、その後ALTER TABLEでAUTO_INCREMENTの開始値を設定します。この記事では、具体的な手順をサンプルコードとともに解説します。 1. サンプルテーブルの作成 まず、AUTO_INCREMENT付きの主キーを持つテーブルを作成します。 mysql> create table DemoTable1929 ( UserId int NOT NULL AUTO_INCREMENT, PRIMARY KEY(UserId) )
-
MySQLで別テーブルの主キーを外部キーとして参照する方法をわかりやすく解説
MySQLでは、あるテーブルの主キー(PRIMARY KEY)を、別のテーブルの外部キー(FOREIGN KEY)として参照することで、テーブル間にリレーション(関連付け)を構築できます。これによりデータの整合性が保たれ、参照先に存在しない値の登録を防ぐことができます。外部キー制約を追加する基本構文既存のテーブルに対して外部キー制約を追加するには、ALTER TABLE文を使用します。基本的な構文は以下のとおりです。alter table yourSecondTableName add constraint `yourConstraintName` foreign key(`yourSecon