Salesforce问题:
我们必须从计划的Job中更新帐户。插入新记录没有问题,但是仅当特定复选框字段设置为true时才应更新现有记录(否则不更新)。同样,由于我们知道顶点代码是从系统上下文运行的。
我正在寻找一种方法,该方法不涉及通过使用ID搜索然后在升序之前检查该字段值来从代码中提取记录。
感谢您的帮助。
List<Account> accountList = new List<Account>(accountsToUpdate);
upsert accountList MY_COMPOSITE_KEY__c;
答案 0 :(得分:0)
使验证规则仅将Your_Checkbox__c
作为错误条件。或者在帐户上创建一个before insert, before update
触发器(如果您还没有),它将检查trigger.new
中的所有记录并对其调用addError()
。验证规则是首选,因为它只是配置,没有代码。
两者的问题是,它将导致您的整个交易终止。如果您的批次更新200个帐户,并且其中一个具有此复选框,则此失败将阻止全部更新。这样做是为了确保系统状态稳定(阅读有关“原子操作”或“ ACID”的信息),您将不需要半途更新的数据...
因此,您可能必须通过调用Database.upsert(accountsToUpdate, External_ID__c, false);
来减轻这种情况,这样它才能保存它可以和不抛出异常的内容...