Hay maneras diferentes de hacer esto.
La forma más fácil es usar la lastval()
función que devolverá el valor generado por la "última" secuencia nextval.
START TRANSACTION;
INSERT INTO entity ...;
INSERT INTO t2 (eid, ...) VALUES (lastval(), ...), (...), (...);
COMMIT;
Si conoce el nombre de la secuencia de la entity
tabla, también puede usar la currval
función:
START TRANSACTION;
INSERT INTO entity ...;
INSERT INTO t2 (eid, ...) VALUES (currval('entity_eid_seq'), ...), (...), (...);
COMMIT;
Esto se puede escribir de una manera más general usando la pg_get_serial_sequence()
función, evitando codificar el nombre de la secuencia:
START TRANSACTION;
INSERT INTO entity ...;
INSERT INTO t2 (eid, ...) VALUES (currval(pg_get_serial_sequence('entity', 'eid')), ...), (...);
COMMIT;
Para obtener más detalles, consulte el manual: http://www.postgresql.org/docs/current/static/functions-sequence.html
un caballo sin nombre
fuente