PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como determinar a chave primária gerada automaticamente usada como chave estrangeira para outra tabela


Resposta à Q1:Use CTEs de modificação de dados e retorne o PK serial com o RETURNING cláusula:
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;

Requer Postgres 9.1 ou posterior.
Respostas relacionadas com explicação e links:
  • Inserir dados em 3 tabelas por vez usando o Postgres
  • Valor de armazenamento do PostgreSQL retornado por RETURNING