如何更新子记录时如何更新父记录?

时间:2019-07-19 21:03:44

标签: apex apex-trigger

一旦相同SObjectType的子记录已更新,我就尝试更新父记录。 该子项具有包含数字的字段“ A”。 父级具有相同的字段“ A”,该字段应仅对特定RecordTypeId“ Rid”的所有子级的“ A”字段中的数字求和。

在对子级执行更新时,如何对父级执行自动更新。 当我直接对父级进行更新时,该字段的计算正确,但是当我仅更新子级时,父级将保留其旧值。

我正在遍历要更新的记录(Trigger.new),但是trigger.new包含子广告系列和父广告系列。 如果添加这样的if块

if(currentRecord.RecordTypeId == Rid){
    parentIds.add(currentRecord.Id);
}
else if(currentRecord.ParentId != NULL || currentRecord.ParentId != ''){
   parentIds.add(currentRecord.ParentId);
}

我首先需要从没有正确的recordType的parentIds中过滤掉父母(让我们将其命名为filteredParentIds),并且我需要将Ids集合(filteredParentIds)转换为SObject Campaign以在最后进行更新,但是一旦执行此[SELECT ... WHERE ID IN:filteredParentIds]以获取需要更新的列表,APEX就会创建一个新实例并远离Trigger.new上下文。 ->因此,触发器不知道它应该更新父广告系列,并且即使我直接在父广告系列上进行直接更新,其值也会错误地保留。

有没有提示如何在父循环中执行这种自动更新而又不让forQ循环内有SOQL查询?

0 个答案:

没有答案