Salesforce数据库记录和执行调控器的虚拟更新

时间:2012-01-11 13:27:33

标签: ajax salesforce dml

我需要在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。

对此有何解决方法? 感谢

1 个答案:

答案 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());