2011-04-05 48 views

回答

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 = [從帳戶中選擇ID,姓名,email__c]; (Account a:aclist) { \t a.email__c = a.name+''gmail.com'; } 更新aclist; 當該觸發器運行現在會發生什麼:在賬戶 觸發(前更新) { \t爲(A帳戶:trigger.new) \t { \t \t如果(a.accountNumber == NULL) \t \t { \t \t \t a.accountnumber ='NA'; \t \t} \t}} 將爲帳戶作爲ACCOUNTNUMBER領域的更新將被改變? – 2011-04-06 13:27:32

+1

是的。正如我所說的,觸發器包含ALL sObject字段。它不像僅僅預先加載VF中引用字段的visualforce/apex擴展。 – mmix 2011-04-06 19:29:29

1

觸發器將包括該sobject的所有字段,它將被調用。您可以檢查該對象中任何字段的先前(舊)值和當前(新)值,並可以對其進行比較並相應地執行操作。

希望它可以幫助你。

相關問題