PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment mettre à jour les lignes de deux tables qui ont des restrictions de clé étrangère

Dans Postgres, vous pouvez utiliser un CTE accessible en écriture pour mettre à jour les deux tables dans une seule instruction.

En supposant cette configuration de tableau :

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

Le CTE serait :

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

Comme les clés étrangères (non différées) sont évaluées au niveau de l'instruction et que la clé primaire et la clé étrangère sont modifiées dans la même instruction , cela marche.

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