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

Cómo actualizar filas de dos tablas que tienen restricciones de clave externa

En Postgres, puede usar un CTE grabable para actualizar ambas tablas en una sola declaración.

Asumiendo esta configuración de mesa:

create table a (rid integer primary key, ride text, qunta integer);
create table b (kid integer primary key, rid integer references a, date date);

El CTE sería:

with new_a as (
  update a 
    set rid = 110
  where rid = 1
)
update b 
  set rid = 110 
where rid = 1;

Dado que las claves foráneas (no diferibles) se evalúan a nivel de instrucción y tanto la clave principal como la foránea se modifican en la misma instrucción , esto funciona.

SQLFiddle:http://sqlfiddle.com/#!15/db6d1/1