PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come determinare la chiave primaria generata automaticamente utilizzata come chiave esterna per un'altra tabella

Risposta alla domanda 1:utilizzare CTE di modifica dei dati e restituire il PK seriale con il RETURNING clausola:

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;

Richiede Postgres 9.1 o successivo.
Risposte correlate con spiegazione e link:

  • Inserisci i dati in 3 tabelle alla volta utilizzando Postgres
  • Valore del negozio PostgreSQL restituito da RETURNING