これは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 1returning を使う
ですが、後ろに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