Først skal du opdatere til en aktuel version af PostgreSQL. 8.1 er for længst død og glemt og ikke understøttet og meget, meget gammel .. forstår du min pointe? Nuværende version er PostgreSQL 9.2 .
Brug derefter en trigger i stedet for en regel. Det er mere enkelt. Det er den vej, de fleste går. Det gør jeg.
For kolonne col
i tabel tbl
...
Først skal du oprette en triggerfunktion :
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;
Brug det derefter i en trigger
.
For det gamle Postgres 8.1:
CREATE TRIGGER insupbef
BEFORE INSERT OR UPDATE
ON tbl
FOR EACH ROW
EXECUTE PROCEDURE trg_tbl_insupbef();
Til 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();
Du kan pakke flere ting i én udløser, men så kan du ikke betinge OPDATERING-udløseren på kun én kolonne ...