Pertama, perbarui ke versi PostgreSQL saat ini. 8.1 sudah lama mati dan dilupakan dan tidak didukung dan sangat, sangat tua .. Anda mengerti maksud saya? Versi saat ini adalah PostgreSQL 9.2 .
Kemudian, gunakan pemicu bukannya aturan. Ini lebih sederhana. Ini adalah cara kebanyakan orang pergi. Saya tahu.
Untuk kolom col
dalam tabel tbl
...
Pertama, buat fungsi pemicu :
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;
Kemudian gunakan dalam pemicu
.
Untuk Postgres 8.1 kuno:
CREATE TRIGGER insupbef
BEFORE INSERT OR UPDATE
ON tbl
FOR EACH ROW
EXECUTE PROCEDURE trg_tbl_insupbef();
Untuk Postgres modern (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();
Anda dapat mengemas lebih banyak barang ke dalam satu pemicu, tetapi kemudian Anda tidak dapat mengkondisikan pemicu UPDATE hanya pada satu kolom ...