更新前和更新后的触发器是否会消除竞争条件?

时间:2013-03-26 20:29:00

标签: salesforce

我有发票对象和付款对象。我希望能够在发票上的未付金额为零之前向发票添加付款。在任何情况下,发票上的未付金额都不应小于零。

我可以创建更新触发器,而不是检查即将应用于发票的付款金额,并抛出AddError以防止数据提交。但是,我应该在更新之前或更新之后使用吗?

是否存在竞争条件。如果两个人几乎同时在200美元未付金额的发票上支付200美元。两个触发器的发票上的未付金额是否可以为200美元,因此这两笔付款都应用于发票。这将使总数处于负数。

1 个答案:

答案 0 :(得分:1)

查看Locking Statements文档中的For Update个关键字。

使用此功能可确保事务在另一个用户可以更新之前完成。