トリガーを起動した行にのみ変更を加える限り、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();