当用户点击案例来更改caseOwner / user时,我必须将此用户添加到所有相关案例(每个客户)。我使用下面的代码,但它只更新一个记录/案例。我可以在调试日志中看到所有案例都使用最新所有者进行了更新,但没有真正更新/存储在caseObject中。请帮助我。
trigger caseAssignment on Case (after insert, after update) {
set<id> ownerId = new Set<Id>();
set<id> customerId = new set<Id>();
for(Case caseobj : trigger.new){
ownerId.add(caseobj.OwnerId);
customerId.add(caseobj.AccountId);
}
for( User user:[Select id, FirstName, LastName from user where Id IN :ownerId]){
for(Case cas : [Select Id, OwnerId, First_Name__c, CaseNumber, AccountId From Case where AccountId IN: customerId]){
cas.OwnerId = user.Id;
}
}
答案 0 :(得分:0)
如果没有更新DML语句,您的代码将不会对您的数据产生任何影响。
可能应该创建更新列表
即。 list updateCaseList = new list()
然后在你的内部for循环中,将“cas”添加到updateCaseList,然后在方法结束时发出update命令(update updateCaseList)。
答案 1 :(得分:0)
假设您编写的逻辑是正确的,您永远不会更新案例
trigger caseAssignment on Case (after insert, after update)
{
Set<Id> ownerId = new Set<Id>();
Set<Id> customerId = new Set<Id>();
List<Case> casesToUpdate = new List<Case>();
for(Case caseobj : trigger.new)
{
ownerId.add(caseobj.OwnerId);
customerId.add(caseobj.AccountId);
}
for( User user:[Select id, FirstName, LastName from user where Id IN :ownerId])
{
for(Case cas : [Select Id, OwnerId, First_Name__c, CaseNumber, AccountId From Case where AccountId IN: customerId])
{
Case c = new Case();
c.ID = cas.ID;
c.OwnerId = user.Id;
casesToUpdate.add(c);
}
}
update casesToUpdate;
}