我正在尝试编写一个触发器来更新“名称”字段(因此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;
}
}
我一直在做一些测试,不认为它有效,也无法找出原因。只是在正确的方向上寻找一个点,因为我仍处于学习过程中。
答案 0 :(得分: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;
}
}