2

複数のフィールドと追加の非同期フィールドを持つテーブルがあります。更新/挿入の前に 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 になったので...

事前に助けてくれてありがとう!

4

1 に答える 1