我在Account对象上有以下触发器:
trigger triggerCounter on Account (before insert) {
/* this trigger is used to record the number of times trigger is called for a bunch of records */
/*countTriggerExecution.count =countTriggerExecution.count+1;
System.debug('Trigger has run' +countTriggerExecution.count);*/
}
以下课程:
public class countTriggerExecution{
/* this class provides a static counter to count the numver of times a trigger is executes */
public static Integer count=0;
}
当通过工作台上传800个帐户记录而不检查“通过批量API异步处理记录”时,我在调试日志中获得了4个条目,并且可以看到静态变量的值未在这4个日志中保持不变。但是,当我检查“通过批量API异步处理记录”时,只有一个触发器调试日志记录,并且还保持静态变量的状态。
任何人都可以帮助理解为什么在第一种情况下4个调试日志记录并且不保持静态变量的状态?
答案 0 :(得分:0)
Bulk api使用最多10,000个记录的批量大小,而其他API将您的批次分成多达200个记录的块并分别发送以进行处理,因此它将显示为4个单独的进程。批量api将整个批处理发送到服务器,然后在此之后处理记录。有关批量API及其工作原理的详细信息,请参阅https://developer.salesforce.com/page/Loading_Large_Data_Sets_with_the_Force.com_Bulk_API。