我已经编写了一个触发器,以便每当有新联系人要创建或更新时,触发器将检查它是否与任何帐户关联?如果是,则增加帐户中的字段Number_of_Contact__c
。
我尝试了以下触发器,但它没有更新该字段。
trigger ContactTotal on Contact (before insert, before update, before delete, after undelete) {
List<Account> ac = new List<Account>();
for(Contact c : Trigger.new) {
Account a = new Account();
if(c.AccountId != null) {
if(Trigger.isBefore) {
if(Trigger.isUpdate) {
String temp;
if(Trigger.oldMap.get(c.id).AccountId != null) {
temp = Trigger.oldMap.get(c.id).AccountId;
}
if(temp != c.AccountId) {
a.Id = temp;
a.Number_of_Contacts__c = a.Number_of_Contacts__c - 1;
}
else {
a.Id = c.AccountId;
a.Number_of_Contacts__c = a.Number_of_Contacts__c + 1;
}
}
else if(Trigger.isDelete) {
a.Id = c.AccountId;
a.Number_of_Contacts__c = a.Number_of_Contacts__c - 1;
}
else {
a.Id = c.AccountId;
if(a.Number_of_Contacts__c != null) {
a.Number_of_Contacts__c = a.Number_of_Contacts__c + 1;
}
}
}
else {
a.Id = c.AccountId;
a.Number_of_Contacts__c = a.Number_of_Contacts__c + 1;
}
ac.add(a);
}
}
if(ac.size()>0) {
upsert(ac);
}
}
如果一个帐户有任何联系人,并且如果我们要在其中添加,更新或删除一个联系人,则应该按照操作(如“删除”)来更新Number_of_Contact__c
字段,然后{{1} }应该减少。
但是我的代码结果表明,帐户的Number_of_Contact__c
只有1个联系人,无论执行什么操作(删除,更新等)