0

我需要在不真正更新任何值的情况下触发 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 个。

有什么解决方法吗?谢谢

4

1 回答 1

3

尝试 批处理 Apex。您可以使用可安排的课程安排您的批次。如果我错了,请纠正我,但每次阅读时都不会重新计算公式?

编辑:评论没有足够的空间。我不保证这会编译(现在无法访问 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());
于 2012-01-11T13:36:43.190 回答