sql >> Databáze >  >> RDS >> PostgreSQL

Jak určit automaticky vygenerovaný primární klíč použitý jako cizí klíč pro jinou tabulku

Odpověď na Q1:Použijte CTE upravující data a vraťte sériové PK s RETURNING klauzule:

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;

Vyžaduje Postgres 9.1 nebo později.
Související odpovědi s vysvětlením a odkazy:

  • Vkládejte data do 3 tabulek najednou pomocí Postgres
  • Hodnota úložiště PostgreSQL vrácená NÁVRATEM



  1. Dynamická kontingenční tabulka MySQL

  2. Část 2 – Jak uspořádat velký databázový diagram

  3. Jak anotovat pole automatického přírůstku MYSQL pomocí anotací JPA

  4. Jak vygenerovat skript pro povolení všech omezení cizích klíčů v databázi SQL Server - SQL Server / Výukový program TSQL, část 78