Apex Trigger- как обновить всех владельцев дел с помощью триггера?
Когда пользователь нажимает на случай, чтобы изменить 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;
}
}
2 ответа
Без обновления инструкции DML ваш код не повлияет на ваши данные.
Вероятно, следует создать список обновлений
то есть список updateCaseList = новый список ()
Затем в вашем внутреннем цикле for добавьте "cas" в updateCaseList, а затем в конце метода выполните команду update (update updateCaseList).
Предполагая, что написанная вами логика верна, вы никогда не обновляете дела
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;
}