Trong Postgres, bạn có thể sử dụng CTE có thể ghi để cập nhật cả hai bảng trong một câu lệnh duy nhất.
Giả sử thiết lập bảng này:
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 sẽ là:
with new_a as (
update a
set rid = 110
where rid = 1
)
update b
set rid = 110
where rid = 1;
Vì khóa ngoại (không thể hoãn lại) được đánh giá ở cấp câu lệnh và cả khóa chính và khóa ngoại đều được thay đổi trong cùng một câu lệnh , những công việc này.
SQLFiddle: http://sqlfiddle.com/#!15/db6d1/1