W Postgresie możesz użyć zapisywalnego CTE, aby zaktualizować obie tabele w jednym oświadczeniu.
Zakładając tę konfigurację stołu:
create table a (rid integer primary key, ride text, qunta integer);
create table b (kid integer primary key, rid integer references a, date date);
CTE byłoby:
with new_a as (
update a
set rid = 110
where rid = 1
)
update b
set rid = 110
where rid = 1;
Ponieważ (nieodroczone) klucze obce są oceniane na poziomie instrukcji, a zarówno klucz podstawowy, jak i klucz obcy są zmieniane w tym samym instrukcji , to działa.
SQLFiddle:http://sqlfiddle.com/#!15/db6d1/1