Werk eerst bij naar een huidige versie van PostgreSQL. 8.1 is al lang dood en vergeten en wordt niet ondersteund en heel, heel oud .. begrijp je mijn punt? Huidige versie is PostgreSQL 9.2 .
Gebruik dan een trigger in plaats van een regel. Het is eenvoudiger. Het is de manier waarop de meeste mensen gaan. Ik wel.
Voor kolom col
in tabel tbl
...
Maak eerst een triggerfunctie :
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;
Gebruik het dan in een trigger
.
Voor het oude Postgres 8.1:
CREATE TRIGGER insupbef
BEFORE INSERT OR UPDATE
ON tbl
FOR EACH ROW
EXECUTE PROCEDURE trg_tbl_insupbef();
Voor moderne 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();
Je zou meer dingen in één trigger kunnen stoppen, maar dan kun je de UPDATE-trigger niet op slechts één kolom conditioneren ...