2013-03-26 2 views
0

У меня есть объект счета и объект платежа. Я хочу иметь возможность добавлять платежи в счет-фактуру до тех пор, пока непогашенная сумма в счете-фактуре не будет равна нулю. Ни в коем случае непогашенная сумма в счете-фактуре не должна быть равна нулю.Выполняют триггеры перед обновлением и после обновления устраняют условия гонки?

Я могу создать триггер обновления, чем проверять сумму платежа, которая будет применяться к счету, и выбросить AddError, чтобы предотвратить передачу данных. Но следует ли использовать до обновления или после обновления?

Может быть состояние гонки. Если два человека совершают платеж в размере 200 долларов США в одно и то же время в счете-фактуре с непогашенной суммой в 200 $. Может ли непогашенная сумма в счете-фактуре быть 200 $ для обоих триггеров, и поэтому оба платежа применяются к счету. Это приведет к отрицательному результату.

ответ

1

Посмотрите на ключевые слова For Update в документах Locking Statements.

Использование этого условия гарантирует, что транзакция завершится до того, как другой пользователь сможет ее обновить.

Смежные вопросы