2011-04-05 6 views
11

मैं वास्तव में सराहना करता हूं कि कोई मुझे यह जांचने के लिए मार्गदर्शन कर सकता है कि अपडेट ट्रिगर में पहले/बाद में अद्यतन कॉल में कोई विशेष फ़ील्ड शामिल है या नहीं। बहुत धन्यवाद।सेल्सफोर्स एपेक्स ट्रिगर्स - कैसे अपडेट करें ट्रिगर में फ़ील्ड शामिल है या नहीं?

उत्तर

13

सभी फ़ील्ड हमेशा मौजूद ट्रिगर में है कि क्या वे गंदा है या नहीं, पता लगाने के लिए कर रहे हैं एक विशेष क्षेत्र संशोधित किया गया है की परवाह किए बिना कर रहे हैं आप oldMap नक्शा जो एक Map<ID, sObject> है का उपयोग करते हुए पंक्ति के पिछले संस्करण को पुनः प्राप्त और तुलना करने के लिए है पुराने और नए मूल्य। उदाहरण के लिए

trigger CaseOnParticularFieldUpdate on Case (before update) { 
    for (Case c: Trigger.new) { 
     Case oldCase = Trigger.oldMap.get(c.ID); 
     if (c.Field != oldCase.Field) { 
      // field was updated, do some magic here 
     } 
    } 
} 
+0

धन्यवाद मुझे पता है कि फील्ड डेटा संशोधित किया गया है या नहीं। हालांकि मेरा प्रश्न इस परिदृश्य से संबंधित है। सूची aclist = [खाता से आईडी, नाम, ईमेल__सी का चयन करें]; (खाता ए: एक्लिस्ट) { \t a.email__c = a.name+'@gmail.com '; } एलीलिस्ट अपडेट करें; अब क्या होगा जब इस ट्रिगर चलाता है: (से पहले अद्यतन) { \t खाते पर ट्रिगर के लिए (खाता A: trigger.new) \t { \t \t अगर (a.accountNumber == नल) \t \t { \t \t \t a.accountnumber = 'NA'; \t \t} \t} } खातों होने के लिए AccountNumber क्षेत्रों अद्यतन बदल जाएगा होगा? –

+1

हां। जैसा कि मैंने कहा, ट्रिगर में सभी sobbject फ़ील्ड शामिल हैं। यह विजुअलफोर्स/शीर्ष एक्सटेंशन की तरह नहीं है जो केवल वीएफ में संदर्भित फ़ील्ड को प्रीलोड करता है। – mmix

1

ट्रिगर में उस सोबजेक्ट के सभी फ़ील्ड शामिल होंगे जिसके लिए इसे बुलाया जाता है। आप उस ऑब्जेक्ट में किसी भी फ़ील्ड के पिछले (पुराने) मान और वर्तमान (नए) मान की जांच कर सकते हैं और इसकी तुलना कर सकते हैं और तदनुसार ऑपरेशन कर सकते हैं।

उम्मीद है कि यह आपकी मदद करता है।

संबंधित मुद्दे