Я не нашел вариантов для реализации этого с помощью правил, но есть альтернативный способ реализации этих триггеров usign.
Итак, вы определяете функцию триггера следующим образом:
CREATE OR REPLACE FUNCTION ur_wrapper_trg()
RETURNS trigger AS
$BODY$
begin
perform infoUpdate(NEW.window_id);
RETURN NEW;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION ur_wrapper_trg() OWNER TO postgres;
Примечание * Используется синтаксис 1006 *PERFORM
.Этот синтаксис идентичен синтаксису SELECT
, за исключением того, что он подавляет все выходные данные.
Чем вы определяете триггер
CREATE TRIGGER some_table_utrg
BEFORE UPDATE
ON some_table
FOR EACH ROW
EXECUTE PROCEDURE ur_wrapper_trg();
В конце концов вы отменяете свое правило.
Не тестировался с null
, но с фактическими windos_id
с работает как ожидалось, без каких-либо нежелательных выходных данных.
Проконсультируйтесь с Триггерами и Правила против триггеров для подробного описания.