PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So bestimmen Sie den automatisch generierten Primärschlüssel, der als Fremdschlüssel für eine andere Tabelle verwendet wird

Antwort auf Q1:Verwenden Sie datenmodifizierende CTEs und geben Sie die serielle PK mit dem RETURNING zurück Klausel:

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;

Erfordert Postgres 9.1 oder später.
Verwandte Antworten mit Erklärung und Links:

  • Fügen Sie mit Postgres Daten in 3 Tabellen gleichzeitig ein
  • PostgreSQL-Speicherwert, der von RETURNING zurückgegeben wird