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

SQL ट्रिगर केवल तभी फायर करें जब कोई विशेष उपयोगकर्ता पंक्ति को अपडेट करे

हाल के पोस्टग्रेज संस्करणों में, एक कब है क्लॉज जिसे आप सशर्त रूप से ट्रिगर को सक्रिय करने के लिए उपयोग कर सकते हैं। आप इसे इस तरह इस्तेमाल कर सकते हैं:

... when (old.* is distinct from new.*) ...

मैं 100% नहीं हूं यह काम करेगा (एटीएम का परीक्षण नहीं कर सकता):

... when (current_user = 'foo') ...

(यदि नहीं, तो इसे अपने plpgsql में if ब्लॉक में रखने का प्रयास करें।)

http://www.postgresql.org/docs/current/static /sql-createtrigger.html

([col_name] . का [पहले|बाद] अपडेट भी है सिंटैक्स, लेकिन मुझे यह कम उपयोगी लगता है क्योंकि कॉलम का मान समान रहने पर भी यह सक्रिय हो जाएगा।)

इस अतिरिक्त नोट को जोड़कर, यह देखते हुए कि @ क्रेगरिंगर का उत्तर हाइलाइट करता है कि आप क्या कर रहे हैं...

सशर्त ट्रिगर्स का उपयोग करके सेल्सफोर्स और पोस्टग्रेज़ के बीच मास्टर-मास्टर प्रतिकृति स्थापित करने का प्रयास करना, मुझे लगता है, एक पाइप सपना है। बस इसे भूल जाओ... इसके अलावा और भी बहुत कुछ होने वाला है:आपको डेटा को दोनों सिरों पर उचित रूप से लॉक करने की आवश्यकता होगी (जो कि उचित तरीके से संभव नहीं होगा), परिणामी गतिरोध का प्रबंधन करें (जो हो सकता है कि स्वचालित रूप से पता न चले), और परस्पर विरोधी डेटा से निपटें।

एक छोटी टीम के साथ इसे सफलतापूर्वक पूरा करने की आपकी संभावना लगभग शून्य है - खासकर यदि आपके पोस्टग्रेज कौशल उस स्तर पर हैं जहां मैनुअल पढ़ने में समय लगाने से आपके अपने सवालों का जवाब मिलेगा। आप सुरक्षित रूप से शर्त लगा सकते हैं कि Salesforce या कुछ प्रमुख SQL शॉप (जैसे कि एक क्रेग के लिए काम करता है) में अधिक सक्षम व्यक्ति को वही माना जाता है, और या तो बुरी तरह से विफल हो जाता है या इसे खारिज कर दिया जाता है।

इसके अलावा, मैं इस बात पर जोर दूंगा कि कुशल, तुल्यकालिक, बहु-मास्टर प्रतिकृति को लागू करना नहीं है एक हल की गई समस्या। आपने सही पढ़ा:नहीं हल किया। अभी कुछ साल पहले, बिल्कुल कर रहा था पोस्टग्रेज कोर में इसे बनाने के लिए पर्याप्त रूप से हल नहीं किया गया था। तो आपके पास कोई पूर्व कला नहीं है जो आपके काम को आधार बनाने और उस पर पुनरावृति करने के लिए अच्छी तरह से काम करती है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एमएस एक्सेस के लिए पोस्टग्रेज

  2. Oracle से PostgreSQL:इसके साथ प्रारंभ/कनेक्ट करें

  3. एसक्यूएल तिथियों की सीमा से अधिक औसत स्कोर का चयन

  4. PostgreSQL तालिका बनाएँ

  5. क्या पोस्टग्रेज में 1 बाइट नंबर स्टोर करना संभव है?