il y a différentes facons de faire cela.
La manière la plus simple est d'utiliser la lastval()fonction qui retournera la valeur générée par la "dernière" séquence nextval.
START TRANSACTION;
INSERT INTO entity ...;
INSERT INTO t2 (eid, ...) VALUES (lastval(), ...), (...), (...);
COMMIT;
Si vous connaissez le nom de la séquence de la entitytable, vous pouvez également utiliser la currvalfonction:
START TRANSACTION;
INSERT INTO entity ...;
INSERT INTO t2 (eid, ...) VALUES (currval('entity_eid_seq'), ...), (...), (...);
COMMIT;
Cela peut être écrit d'une manière plus générale en utilisant la pg_get_serial_sequence()fonction, en évitant de coder en dur le nom de la séquence:
START TRANSACTION;
INSERT INTO entity ...;
INSERT INTO t2 (eid, ...) VALUES (currval(pg_get_serial_sequence('entity', 'eid')), ...), (...);
COMMIT;
Pour plus de détails, veuillez consulter le manuel: http://www.postgresql.org/docs/current/static/functions-sequence.html