如何使用 salesforce 中的触发器和批量化来执行此操作。
答案 0 :(得分:0)
有很多方法可以执行此操作,此处有一种方法可以通过帐户触发器调用:
public static void afterUpdate(List<Account> newList, List<Account> oldList){
Set<Id> accountIds = new Set<Id>();
for ( Integer i=0;i<newList.size();i++ ){
if ( newList[i].BillingStreet != oldList[i].BillingStreet ){
accountIds.add(newList[i].Id);
}
}
List<Contact> contactsToUpdate = new List<Contact>();
for ( Contact c : [
SELECT Id, MailingStreet, Account.BillingStreet
FROM Contact
WHERE AccountId IN :accountIds
]){
if ( c.MailingStreet != c.Account.BillingStreet ){
c.MailingStreet = c.Account.BillingStreet;
contactsToUpdate.add(c);
}
}
if ( contactsToUpdate.size() > 0 ){
update contactsToUpdate;
}
}