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 entity
table, vous pouvez également utiliser la currval
fonction:
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
un cheval sans nom
la source