PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

पोस्टग्रेज में कॉलम में इनपुट को सेनिटाइज करें

सबसे पहले, 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 ट्रिगर को कंडीशन नहीं कर सकते ...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django cache.set () डुप्लिकेट कुंजी त्रुटि उत्पन्न कर रहा है

  2. एक कॉलम में 2 कॉलम संयुक्त SQL

  3. PG त्रुटि सर्वर से कनेक्ट नहीं हो सकी:कनेक्शन अस्वीकृत क्या सर्वर पोर्ट 5432 पर चल रहा है?

  4. Django और नए सर्वर पर PostgreSQL कनेक्शन का समय समाप्त ऑपरेशनल त्रुटि

  5. DBeaver और PostgreSQL में सीरियल डेटा प्रकार की समस्याएं