sql >> Database >  >> RDS >> PostgreSQL

Hoe de automatisch gegenereerde primaire sleutel te bepalen die wordt gebruikt als externe sleutel voor een andere tabel?

Antwoord op V1:Gebruik CTE's voor het wijzigen van gegevens en retourneer de seriële PK met de RETURNING clausule:

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;

Vereist Postgres 9.1 of later.
Verwante antwoorden met uitleg en links:

  • Voeg gegevens in 3 tabellen tegelijk in met Postgres
  • PostgreSQL-winkelwaarde geretourneerd door RETURNING



  1. Oracle.DataAccess.Client-afhankelijkheden

  2. Hoe u de datum van gisteren in T-SQL kunt krijgen

  3. Wat is het doel van een Android-projectiekaart in een contentprovider?

  4. Een weergave maken in PostgreSQL