まず、PostgreSQLの現在のバージョンに更新します。 8.1は長い間死んでいて、忘れられていて、サポートされておらず、非常に古いです..あなたは私の主張を理解しますか? 現在のバージョンはPostgreSQL9.2です 。
次に、トリガーを使用します ルールの代わりに。簡単です。それはほとんどの人が行く方法です。私はそうします。
列col
の場合 テーブルtbl
内 ...
まず、トリガー関数を作成します。 :
CREATE OR REPLACE FUNCTION trg_tbl_insupbef()
RETURNS trigger AS
$BODY$
BEGIN
NEW.col := f_myfunc(NEW.col); -- your function here, must return matching type
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE;
次に、トリガーで使用します。
。
古代のPostgres8.1の場合:
CREATE TRIGGER insupbef
BEFORE INSERT OR UPDATE
ON tbl
FOR EACH ROW
EXECUTE PROCEDURE trg_tbl_insupbef();
現代のPostgres(9.0+)の場合
CREATE TRIGGER insbef
BEFORE INSERT OR UPDATE OF col -- only call trigger, if column was updated
ON tbl
FOR EACH ROW
EXECUTE PROCEDURE trg_tbl_insupbef();
より多くのものを1つのトリガーにパックすることはできますが、その場合、1つの列だけでUPDATEトリガーを条件付けることはできません...