【问题标题】:MDR clarificationMDR 说明
【发布时间】:2012-05-17 17:23:33
【问题描述】:
设置:
我的MDR关系如下图:
活动---- 联系方式
在 EVENT 上有一个触发器,它在插入之前和更新之前触发,计算参加者的数量(通过在参加者对象中搜索事件 ID 的出现次数。
问题:
当我向 ATTENDEE 添加记录时,为什么我的触发器会在 EVENT 对象上触发?!
谢谢!
【问题讨论】:
标签:
triggers
relational-database
salesforce
apex-code
【解决方案1】:
当对详细记录的更改(在主从关系中)导致主记录上的汇总汇总发生更改时,可能会导致主记录上的触发器执行。
The Roll Up Summary Field Technology Overview知识文章,在Salesforce帮助中,解释的很好:
增量更新
当汇总记录发生变化时,我们会确定该变化是否会导致 RSF 值发生变化。如果是这样,我们计算一个增量值,然后将其应用于同一事务的汇总记录中的 RSF。我们在内存中执行此操作。不需要额外的数据库调用。仅对具有实际更改的 RSF 的行执行更新。如果汇总行本身被汇总,则该过程继续到祖父母。汇总行的所有验证、触发器、工作流等在更改时都必须执行。所有增量更新都执行到 38 位精度。
另外,请参阅Spring '09 release notes 的第 79 页了解更多详细信息。
工作流程规则和汇总汇总字段评估
Spring '09 工作流规则和汇总汇总字段评估更新会影响 Salesforce 评估具有 Apex 触发器的对象上的工作流规则和汇总汇总字段的方式。此更新提高了数据的准确性,并防止在发生递归时重新评估工作流规则。递归是您的自定义逻辑的一部分(例如汇总汇总字段或 Apex 触发器)导致 Salesforce 在保存记录时执行逻辑两次的情况,通常会导致不良行为。有关详细信息,请参阅“什么是 Spring '09 工作流程规则和汇总汇总字段评估更新?”在 Salesforce 在线帮助中。