0

我有一个发票对象和一个付款对象。我希望能够将付款添加到发票中,直到发票上的未结金额为零。在任何情况下,发票上的未付金额都不应小于零。

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

能有比赛条件吗?如果两个人在一张未付金额为 200 美元的发票上几乎同时支付 200 美元。对于两个触发器,发票上的未结金额是否可以是 200 美元,因此两个付款都应用于发票。这将使总数为负数。

4

1 回答 1

1

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

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

于 2013-03-27T02:18:16.857 回答