PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come aggiornare le righe di due tabelle con restrizioni di chiave esterna

In Postgres puoi utilizzare un CTE scrivibile per aggiornare entrambe le tabelle in un'unica istruzione.

Supponendo questa configurazione della tabella:

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

Il CTE sarebbe:

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

Poiché le chiavi esterne (non differibili) vengono valutate a livello di istruzione e sia la chiave primaria che quella esterna vengono modificate nella stessa istruzione , questo funziona.

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