0

我正在尝试编写一个触发器以将“名称”字段(API 中的 WhoId)更新为与任务相关的帐户的自定义主要联系人字段的“名称”(ContactId)。

trigger updateNameToPrimary on Task (after insert, after update) {
    for(Task t : Trigger.new) {
        t.WhoID = [SELECT Account.Id 
                   FROM Account 
                   WHERE Id = :t.Id].Custom_Primary_Contact__c;        
    }
}

我一直在做一些测试,但认为它不起作用,无法弄清楚原因。只是在正确的方向上寻找一点,因为我仍在学习过程中。

4

1 回答 1

0

将触发器从“更新后插入后”更改为“更新前插入前”。像这样的东西

trigger updateNameToPrimary on Task (before insert, before update) {
    set<Id> accIdSet = new  set<Id>();
    for(Task t : Trigger.new) {
       if(t.AccountId!=null)
        accIdSet.add(t.AccountId);        
    }
   map<Id,Account> accMap = new map<Id,Account>([select Custom_Primary_Contact__c from Account where Id in:accIdSet]); 
   for(Task t : Trigger.new) {
        if(t.AccountId!=null && accMap.containsKey(t.AccountId))
        t.WhoID = accMap.get(t.AccountId).Custom_Primary_Contact__c;      
    }
}
于 2014-02-03T06:36:58.397 回答