複数のフィールドと追加の非同期フィールドを持つテーブルがあります。更新/挿入の前に outofsync フィールド値を true に設定するトリガーとトリガー関数を作成しました。
引き金:
CREATE TRIGGER goods_update_outofsync
BEFORE UPDATE
ON goods
FOR EACH ROW
EXECUTE PROCEDURE tg_update_goods_outofsync();
トリガー機能:
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フィールドを手動でfalseに更新する方法は、試行ごとにトリガーによって自動的にtrueに変更されるためです。
編集:
これはほとんど機能します:
IF (NEW.outofsync = OLD.outofsync) THEN
NEW.outofsync=true;
END IF;
outofsync フィールドの値が既に false であり、それを false に設定したい場合を除いて、それが true になったので...
事前に助けてくれてありがとう!