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

MySQLの@@identityとは?最後に挿入されたAUTO_INCREMENT値を取得する方法

MySQLにおける@@identityとは

@@identityは、現在のセッション内でAUTO_INCREMENTカラムに最後に挿入された値を返すシステム変数です。新規レコード追加後に、自動採番されたIDをすぐに取得したい場合などに活用できます。ここでは、実際にテーブルを作成して動作を確認してみましょう。

1. テーブルの作成

まず、以下のコマンドでサンプル用のテーブルを作成します。

mysql> create table DemoTable(
    UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserName varchar(100)
);
Query OK, 0 rows affected (0.67 sec)

2. レコードの挿入

次に、INSERTコマンドを使ってテーブルに複数のレコードを挿入します。

mysql> insert into DemoTable(UserName) values('David');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(UserName) values('Mike');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(UserName) values('Carol');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(UserName) values('Robert');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable(UserName) values('John');
Query OK, 1 row affected (0.13 sec)

3. テーブルの内容を確認

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

mysql> select * from DemoTable;

実行すると、次のような出力が得られます。

+--------+----------+
| UserId | UserName |
+--------+----------+
| 1      | David    |
| 2      | Mike     |
| 3      | Carol    |
| 4      | Robert   |
| 5      | John     |
+--------+----------+
5 rows in set (0.00 sec)

4. @@identityを実行する

それでは、@@identityを使ってみましょう。

mysql> select @@identity;

実行結果は以下のとおりです。

+------------+
| @@identity |
+------------+
| 5          |
+------------+
1 row in set (0.00 sec)

このように、直前に挿入された「John」のレコードに割り当てられたUserId「5」が返されていることがわかります。つまり@@identityは、同一セッション内で最後に生成された自動採番の値を保持しているのです。

補足:LAST_INSERT_ID()との違い

MySQLでは同様の目的でLAST_INSERT_ID()関数が用意されており、一般的にはこちらの使用が推奨されています。LAST_INSERT_ID()は接続ごとに独立して値を管理するため、マルチユーザー環境でも安全に動作します。一方、@@identityは他のデータベース(SQL Serverなど)との互換性を意識した変数であり、MySQLでの新規開発ではLAST_INSERT_ID()を選ぶのが良いでしょう。

  1. MySQLの「SELECT TRUE」とは?意味と使い方を解説

    MySQLにおける「SELECT TRUE」の基本MySQLでは、SELECT TRUEというステートメントを実行すると、条件に一致する行ごとに「1」が返されます。これは、MySQLにおいてTRUE(真)という論理値が内部的に整数の「1」として扱われているためです。逆にFALSE(偽)は「0」に相当します。この記事では、実際にテーブルを作成し、SELECT TRUEがどのような結果を返すのかを具体的な例で確認していきます。検証用テーブルの作成まず、以下のコマンドでサンプルテーブルを作成します。mysql> create table DemoTable(Name varchar(100))

  2. MySQLでテーブルの値からランダムに2件のレコードを取得する方法

    MySQLでランダムにレコードを抽出するには、ORDER BY RAND()を使用します。さらに、取得する件数を2件に限定したい場合は、LIMIT 2を組み合わせることで実現できます。この記事では、実際にテーブルを作成し、ランダムに2つの値を取得する手順を具体的な例とともに解説します。サンプルテーブルの作成まず、質問文を格納するテーブルを作成しましょう。mysql> create table DemoTable1815 ( Question text ); Query OK, 0 rows affected (0.00 sec)テストデータの挿入次に、INSERT