2011-04-05 63 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的所有字段,它将被调用。您可以检查该对象中任何字段的先前(旧)值和当前(新)值,并可以对其进行比较并相应地执行操作。

希望它可以帮助你。

相关问题