我想使用 apex 在 salesforce 中实现同步。
我的要求是,我必须从将来的方法中更新一个字段。
我在数据库中有一个名为 Counter_c 的字段,我正在调用一个方法,该方法将调用 3 个未来方法。那些未来的方法将尝试将计数器_c 的值增加 1。但字段没有得到更新。
这是我的代码:
公共无效生成报告(){
ReportHistory__c repHst = new ReportHistory__c();
repHst.Counter__c = 0;
insert repHst;
generateReport1(repHst.Id);
generateReport2(repHst.Id);
generateReport3(repHst.Id);
}
@future
public static void generateReport1(Id id) {
List<ReportHistory__c> lstRep = [select Counter__c rom ReportHistory__c where Id = :id];
if(!lstRep.isEmpty()) {
++lstRep[0].Counter__c;
}
update lstRep;
}
@future
public static void generateReport2(Id id) {
List<ReportHistory__c> lstRep = [select Counter__c rom ReportHistory__c where Id = :id];
if(!lstRep.isEmpty()) {
++lstRep[0].Counter__c;
}
update lstRep;
}
@future
public static void generateReport3(Id id) {
List<ReportHistory__c> lstRep = [select Counter__c rom ReportHistory__c where Id = :id];
if(!lstRep.isEmpty()) {
++lstRep[0].Counter__c;
}
update lstRep;
}
执行上述代码后,我希望 Counter__c 应为 3。但它仍然为 0 或有时为 1。
请帮助我,如果有任何方法可以控制将来的调用,以便将来的每个调用都应将 Counter__c 的值更新 1。
谢谢,维维克