सबसे पहले, PostgreSQL के वर्तमान संस्करण में अपडेट करें। 8.1 लंबे समय से मर चुका है और असमर्थित और बहुत, बहुत पुराना है .. आप मेरी बात समझ गए? वर्तमान संस्करण PostgreSQL 9.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;
फिर इसका उपयोग ट्रिगर में करें।
.
प्राचीन पोस्टग्रेज 8.1 के लिए:
CREATE TRIGGER insupbef
BEFORE INSERT OR UPDATE
ON tbl
FOR EACH ROW
EXECUTE PROCEDURE trg_tbl_insupbef();
आधुनिक दिनों के लिए पोस्टग्रेज (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();
आप एक ट्रिगर में अधिक सामान पैक कर सकते हैं, लेकिन फिर आप केवल एक कॉलम पर UPDATE ट्रिगर को कंडीशन नहीं कर सकते ...