トリガーを起動した行にのみ変更を加える限り、BEFORE UPDATEを使用する方がはるかに簡単(かつ安価)です。 トリガー。new.complete_flagに変更を加えることができます。 UPDATEを実行するのではなく、テーブルに保存する前に すでにそこにある後の声明。
UPDATE OF <column>を使用して、トリガーを特定のフィールドの更新に制限することもできます。 CREATE TRIGGERの条項
ステートメント。
最終結果は次のようになります:
CREATE FUNCTION completed_timestamp() RETURNS trigger AS $$
LANGUAGE plpgsql
BEGIN
IF new.complete_flag = 1 and old.completed_flag = 0 THEN
new.complete_time := current_timestamp;
END IF;
RETURN new;
END;
$$;
CREATE TRIGGER update_timestamp
BEFORE UPDATE OF completed_flag ON tbl_pXXXX
FOR EACH ROW
EXECUTE PROCEDURE completed_timestamp();