У меня есть таблица с несколькими полями и дополнительное поле outofsync. Создал триггер и функцию триггера, чтобы установить значение поля outofsync в значение true перед любым обновлением/вставкой.Обновить поле обновлено триггером
Trigger:
CREATE TRIGGER goods_update_outofsync
BEFORE UPDATE
ON goods
FOR EACH ROW
EXECUTE PROCEDURE tg_update_goods_outofsync();
функция Trigger:
CREATE OR REPLACE FUNCTION tg_update_goods_outofsync()
RETURNS trigger AS
$BODY$
BEGIN
NEW.outofsync=true;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION tg_update_goods_outofsync()
OWNER TO postgres;
А теперь приходит к "простой" вопрос я не могу найти ответ: как обновить вручную outofsync поле ложь, потому что после каждой попытки автоматически сменится на true с помощью триггера.
EDIT:
Это почти работает:
IF (NEW.outofsync = OLD.outofsync) THEN
NEW.outofsync=true;
END IF;
исключением случаев, когда значение поля outofsync уже ложь, и я хочу, чтобы установить его на ложь, потому что это стало правдой, то ...
Благодарим за помощь!
Поскольку я не знаком с GUC и у меня много полей в этой таблице (для решения D), я отключу триггер, я думаю. Спасибо! – HoGo
http://koo.fi/blog/2013/01/08/disable-postgresql-triggers-temporarily/ Я думаю, что я бы скорее отключил все триггеры в текущей сессии, чем один, но глобально. – HoGo
О, вы можете использовать обычную функцию 'set_config' SQL вместо инструкции' SET'. –