PostgreSQLのSEQUENCE

によると、currval()を使えば、

  CREATE TABLE entity1 (id serial primary key, val text);
  CREATE TABLE entity2 (id serial primary key, val text);
  CREATE TABLE cross12 (id serial primary key, entity1_id integer, entity2_id integer);

みたいなテーブル構成で

  INSERT INTO entity1 (val) VALUES ('aaaa');
  INSERT INTO entity2 (val) VALUES ('bbbb');
  INSERT INTO cross12 (entity1_id, entity2_id) VALUES (currval('entity1_id_seq'), currval('entity2_id_seq'));

のように、今このセッションでそのSEQUENCEから払い出された値を後で参照できるみたい。ふーん。いいなこれ。