PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment déterminer la clé primaire générée automatiquement utilisée comme clé étrangère pour une autre table

Réponse à Q1 :Utilisez des CTE modificateurs de données et renvoyez le PK série avec le RETURNING clause :

WITH ins_main AS (
   INSERT INTO main(col1)
   VALUES ('some value 1')
   RETURNING main_id    
   )
, ins_submain AS (
   INSERT INTO submain (main_id, col2)
   SELECT main_id, 'some value 2'
   FROM   ins_main
   RETURNING submain_id
   )
INSERT INTO subsub (submain_id, col3)
SELECT submain_id, 'some value 3'
FROM   ins_submain;

Nécessite Postgres 9.1 ou plus tard.
Réponses associées avec explication et liens :

  • Insérer des données dans 3 tables à la fois à l'aide de Postgres
  • Valeur du magasin PostgreSQL renvoyée par RETURNING