サイトアイコン IT NEWS

PostgreSQLで登録(insert)したレコードのIDを取得する方法

どのデータベースでも、ユニークにオートインクリメント(自動採番)するテーブルを作成するのが一般的だと思います。
データベースの一つである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を取得することができます。

もし他に何か質問がありましたら、お気軽にお聞きください。

モバイルバージョンを終了