タイガーラック クリエイティブブログ
2025
December
19

PostgreSQLのRETURNING句でINSERT/UPDATE/DELETEの結果を即時取得する方法

今回はPostgreSQLのRETURNING句について紹介します。
データをINSERTした時にシーケンスになってるカラムの値を取得したい。
というタイミングは結構多いと思います。
その場合は再度currvalで取得したりすることが多いと思いますがRETURNING句を使えば一度のクエリで完結できます。

RETURNING句とは

RETURNING句は、INSERT、UPDATE、DELETEの実行結果として、対象となった行のデータを返す機能です。
PostgreSQL独自の機能で、SQL ServerのOUTPUT句やOracleのRETURNING INTO句に相当します。
これを使うことで、データ操作と結果取得を1つのクエリにまとめることができます。

テーブル

売上テーブル
注文id売上日
12025/12/01
22025/12/02
32025/12/03

※注文idにシーケンス登録中

売上明細テーブル
注文明細id注文id商品名個数
101りんご5
111みかん10
122みかん20
133ぶどう2

SQL(INSERT)

INSERT INTO 売上テーブル
(売上日) 
VALUES 
('2025/14/04')
RETURNING 注文id,売上日;

結果

注文id売上日
42025/14/04

注文idを取得することができたので、このあと売上明細テーブルに注文idの登録が簡単になりました。

SQL(UPDATE)

UPDATE 売上明細テーブル
SET 個数 = 30
WHERE 売上明細id = 11
RETURNING 注文明細id, 注文id,個数;

結果

注文明細id注文id個数
11130

更新した内容がすぐに取得できました。

SQL(DELETE)

DELETE FROM 売上明細テーブル
WHERE 商品名 = 'みかん'
RETURNING 注文明細id, 注文id,個数;

結果

注文明細id注文id個数
11110
12220

DELETEに関しては削除後は参照できないのでログを記入する際、かなり便利に使うことができます。

まとめ

データと更新と結果の取得がまとめて1回の処理にできるので処理を簡単にすることができるようになります!

このカテゴリの最新記事

関連記事

SHOP LIST

タイガーラック株式会社

〒577-0056
大阪府東大阪市長堂1-3-14 TOKUYASU Bld.