2013-03-26 33 views
0

我有一个发票对象和一个付款对象。我希望能够将发票添加到发票中,直到发票上的未付金额为零。在任何情况下,发票上的未付金额都不应低于零。更新前和更新后触发器是否消除竞态条件?

我可以创建一个更新触发器来检查即将应用于发票的付款金额,并引发一个AddError以防止数据提交。但是,我应该在更新之前还是更新之后使用?

有没有比赛条件。如果两个人几乎同时以200美元未付金额发票支付200美元。发票上的未付金额可以为200美元,因此这两种付款都适用于发票。这会使总数减少。

回答

1

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

使用此选项可确保事务在其他用户更新之前完成。