MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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)
    );
Query OK, 0 rows affected (0.00 sec)

2. レコードの挿入

INSERTコマンドを使って、テーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable1929 values();
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1929 values();
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1929 values();
Query OK, 1 row affected (0.00 sec)

3. レコードの確認

SELECT文でテーブル内のすべてのレコードを表示します。

mysql> select * from DemoTable1929;

実行結果は以下の通りです。UserIdには1から順に連番が振られています。

+--------+
| UserId |
+--------+
|      1 |
|      2 |
|      3 |
+--------+
3 rows in set (0.00 sec)

4. 主キー(AUTO_INCREMENT)のリセット

主キーをリセットするクエリは以下の通りです。まずTRUNCATE TABLEでテーブル内のデータをすべて削除し、次にALTER TABLEでAUTO_INCREMENTの開始値を1に設定します。

mysql> truncate table DemoTable1929;
Query OK, 0 rows affected (0.00 sec)
mysql> alter table DemoTable1929 auto_increment=1;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

5. リセット後のレコード挿入

これでレコードを挿入すると、主キーの値は1から振り直されます。

mysql> insert into DemoTable1929 values();
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1929 values();
Query OK, 1 row affected (0.00 sec)

SELECT文でテーブル内のすべてのレコードを表示して確認します。

mysql> select * from DemoTable1929;

実行結果は以下の通りです。連番が1から再開されていることがわかります。

+--------+
| UserId |
+--------+
|      1 |
|      2 |
+--------+
2 rows in set (0.00 sec)

補足:TRUNCATEとDELETEの違いに注意

TRUNCATE TABLEはテーブル内の全データを削除すると同時に、AUTO_INCREMENTの値も自動的に初期化します。そのため、TRUNCATEを使用した場合はALTER TABLEによる明示的なリセットが不要なケースもあります。

一方、DELETE文でデータを削除した場合、AUTO_INCREMENTの値はリセットされず、連番は継続します。DELETE後に連番を振り直したい場合は、ALTER TABLE テーブル名 auto_increment=1;を明示的に実行する必要があります。

なお、TRUNCATEはWHERE句による条件指定ができず、トランザクションのロールバックもできないため、実行前には必ずデータのバックアップを取るなど、十分に注意してください。

  1. MySQLでカラムが主キー(PRIMARY KEY)かどうかを確認する方法

    MySQLにおいて、特定のカラムが主キー(プライマリキー)であるかどうかを確認したい場合は、information_schema.columnsテーブルのCOLUMN_NAMEとCOLUMN_KEY=PRIを活用します。これにより、テーブル内のどのカラムが主キーとして設定されているのかを簡単に判定できます。基本構文カラムが主キーかどうかを判定するための基本的な構文は以下の通りです。SELECT column_name, CASE WHEN column_key = PRI THEN メッセージ1 ELSE メッセージ2

  2. MySQLで別テーブルの主キーを外部キーとして参照する方法をわかりやすく解説

    MySQLでは、あるテーブルの主キー(PRIMARY KEY)を、別のテーブルの外部キー(FOREIGN KEY)として参照することで、テーブル間にリレーション(関連付け)を構築できます。これによりデータの整合性が保たれ、参照先に存在しない値の登録を防ぐことができます。外部キー制約を追加する基本構文既存のテーブルに対して外部キー制約を追加するには、ALTER TABLE文を使用します。基本的な構文は以下のとおりです。alter table yourSecondTableName add constraint `yourConstraintName` foreign key(`yourSecon