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