У меня есть таблица представления, которая представляет собой объединение двух отдельных таблиц (скажем, Таблица _A и Таблица _B).
Мне нужно иметь возможность обновить строку в таблице представлений, и, похоже, это можно сделать с помощью «правила просмотра». Все записи в таблице представлений имеют отдельные идентификаторы, поэтому идентификатор, который существует в таблице _A, не будет существовать в таблице _B.
Я создал следующее правило:
CREATE OR REPLACE RULE view_update AS
ON UPDATE TO viewtable DO INSTEAD ( UPDATE _A SET foo = false
WHERE old.id = _A.id;
UPDATE _B SET foo = false
WHERE old.id = _B.id;
);
Если я обновлю таблицу _B, она вернет правильное количество затронутых строк (1). Однако если я обновлю таблицу _A, она вернет (0) затронутых строк, даже если данные были изменены. Если я поменяю порядок обновлений, произойдет то же самое, но в обратном порядке.
Как я могу решить эту проблему, чтобы она возвращала правильное количество затронутых строк.
Спасибо.