sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo determinar la clave principal generada automáticamente utilizada como clave externa para otra tabla

Respuesta a P1:use CTE de modificación de datos y devuelva el PK serial con el 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;

Requiere Postgres 9.1 o posterior.
Respuestas relacionadas con explicación y enlaces:

  • Insertar datos en 3 tablas a la vez usando Postgres
  • Valor de almacén de PostgreSQL devuelto por RETURNING