これはinsert
でレコードを追加した後にselect ... limit 1
をせずに一度に終わらせるものです。
確認用の準備
以下のようにfoo
テーブルを作っておきます。
postgres=# create table foo (id serial primary key not null, text text not null);
CREATE TABLE
実際に確認
まず、普通にinsert
した時はこうなります。「1件追加しました」という情報だけ返っています。
postgres=# insert into foo (text) values ('hoge');
INSERT 0 1
returning を使う
ですが、後ろにreturning *
を追加すると今入れたレコードが返るようになります。
postgres=# insert into foo (text) values ('fuga') returning *;
id | text
----+------
2 | fuga
(1 row)
INSERT 0 1
*
はselect ...
のカラム指定と同じように指定できます。したがって、カラム名を指定すればそれだけを返すようにできます。
postgres=# insert into foo (text) values ('piyo') returning text;
text
------
piyo
(1 row)
INSERT 0 1