我需要在Salesforce数据库中触发一大堆记录的更新而不真正更新任何值。这是为了使一些公式重新计算某些字段。
这是我尝试过的 - 一个可调度的课程(假设我希望它每晚都运行):
global class acmePortfolioDummyUpdate implements Schedulable
{
global void execute(SchedulableContext SC)
{
for (Acme_Portfolio__c p : [Select Id From Acme_Portfolio__c]) {
update(p);
}
}
}
update(p)是一个DML语句,Salesforce将它们的数量限制为150.在我的情况下,它只有几千条记录。
另外,我需要在许多不同的投资组合中做到这一点。 SF将计划类的数量限制为10。
对此有何解决方法? 感谢
答案 0 :(得分:3)
试试Batch Apex。您可以使用可调度类来安排批处理。如果我错了,请纠正我,但每次阅读时都不重新计算公式?
编辑:评论没有enought空间。 我不保证会编译(现在没有权限访问org),但请尝试这样:
global class batchClass implements Database.batchable<sObject>{
global Database.QueryLocator start(Database.BatchableContext BC){
return Database.getQueryLocator('Select Id From Acme_Portfolio__c');
}
global void execute(Database.BatchableContext BC, List<sObject> scope){
update scope;
}
global void finish(Database.BatchableContext BC){
}
}
从系统日志中运行:
Database.executeBatch(new batchClass());