PostgreSQL RETURNING

INSERT/UPDATE/DELETE実行時に対象行を返却 RETURNING

SQL

--更新された行を返す INSERT INTO foo VALUES (100001, 'リンゴ', 1, true) RETURNING *; UPDATE foo SET foo_name = 'バナナ' WHERE foo_id = 100001 RETURNING *; DELETE FROM foo WHERE foo_id = 100001 RETURNING *; --更新された行の指定カラムを返す INSERT INTO foo VALUES (100001, 'リンゴ', 1, true) RETURNING foo_id;

RETURNING有り

pgdb=# INSERT INTO foo VALUES (100001, 'リンゴ', 1, true) RETURNING *; foo_id | foo_name | foo_category | foo_flg --------+----------+--------------+--------- 100001 | リンゴ | 1 | t (1 行) pgdb=# UPDATE foo SET foo_name = 'バナナ' WHERE foo_id = 100001 RETURNING *; foo_id | foo_name | foo_category | foo_flg --------+----------+--------------+--------- 100001 | バナナ | 1 | t (1 行) pgdb=# DELETE FROM foo WHERE foo_id = 100001 RETURNING *; foo_id | foo_name | foo_category | foo_flg --------+----------+--------------+--------- 100001 | バナナ | 1 | t (1 行) pgdb=# INSERT INTO foo VALUES (100001, 'リンゴ', 1 , true) RETURNING foo_id; foo_id -------- 100001 (1 行)

RETURNING無し(通常)

pgdb=# INSERT INTO foo VALUES (100001, 'リンゴ', 1, true); INSERT 0 1

8.2から利用可能、それ以前はINSERT/UPDATEの後にSELECTして対象行を取得していた。

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。主にLAPP環境でPHPを書いています。最近はjQueryで遊んでいます。
※動作確認について