どのデータベースでも、ユニークにオートインクリメント(自動採番)するテーブルを作成するのが一般的だと思います。
データベースの一つであるPostgreSQLでは、データを登録(insert
)する際に、登録したIDを返す方法があります。
この方法を使うことで、登録したデータのIDを簡単に取得することができ、次の処理に利用することができます。
ID付きのテーブルを作成する
まずはPostgreSQLに、オートインクリメント(自動採番)するIDカラムを持つテーブルを作成しましょう。
一般的な方法は、SERIAL
データ型を使用することです。SERIAL
データ型は、自動的に増加する整数値を生成するための特殊なデータ型です。
以下のSQL文を使用して、オートインクリメントするIDのカラムを持つテーブルを作成します。
CREATE TABLE テーブル名 ( id SERIAL PRIMARY KEY, 列1 データ型1, 列2 データ型2, ... );
上記のSQL文では、id
カラムに SERIAL
データ型を使用し、PRIMARY KEY
制約を設定しています。PRIMARY KEY
制約は、一意の識別子として機能し、テーブル内の各行を一意に識別します。
作成したテーブルにデータを登録する際に、登録したIDを取得する方法についても解説します。
insertしたIDを返す方法(returning句の使用)
PostgreSQLでは、INSERT
文の実行時に RETURNING
句を使用することで、挿入されたデータの特定の列の値を取得することができます。
以下のサンプルSQL文を使用して、データを登録し、登録したIDを取得する方法を説明します。
INSERT INTO テーブル名 (列1, 列2, ...) VALUES (値1, 値2, ...) RETURNING id;
上記のSQL文では、INSERT INTO
句を使用してデータを挿入し、RETURNING
句を使用して id
カラムの値を取得しています。
この方法を使用すると、データを登録した後に、直接IDを取得することができます。
【おまけ】insertした後にIDを簡単に取得する方法
PostgreSQLでは、INSERT
文を実行した後に自動的に生成されたIDを取得するための便利な方法があります。
これは、RETURNING
句を使用する代わりに、INSERT INTO
文の後に lastval()
関数を使用する方法です。
以下のサンプルSQL文を使用して、登録したデータのIDを取得する最も簡単な方法を説明します。
INSERT INTO テーブル名 (列1, 列2, ...) VALUES (値1, 値2, ...); SELECT lastval();
上記のSQL文では、まず INSERT INTO
句を使用してデータを挿入し、その後にSELECT lastval();
を実行しています。lastval()
関数は、直近のINSERT文で生成されたシーケンスの現在の値を返します。
この方法を使用すると、データを登録した後に、簡単に登録したIDを取得することができます。
以上が、PostgreSQLでオートインクリメントするIDのカラムを持つテーブルに登録したIDを取得する方法についての解説です。
これらの方法を使用することで、効果的に登録したデータのIDを取得することができます。
もし他に何か質問がありましたら、お気軽にお聞きください。
- Original:https://minory.org/postgresql-returning.html
- Source:Minory
- Author:管理者