Проверка заказа - PullRequest
       7

Проверка заказа

0 голосов
/ 13 февраля 2012

У меня есть приложение для управления продажами, запасами и оплатой на складе целых салеров из веб-интерфейса. В частности, когда заказ выполнен, он должен создать строку, соответствующую каждому заказанному товару с соответствующим количеством. Проверка наличия на складе производится в момент заказа.

С учетом следующих двух способов проверки заказа:

1) Использование триггера «BEFORE ... ON INSERT» в таблице OrderLine, который выполняет SELECT при проверке товара, если существует достаточный запас.

2) Выполнение SELECT ... FROM OrderLine ПРИСОЕДИНЯЙТЕСЬ К ГДЕ количеству

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

Спасибо

1 Ответ

2 голосов
/ 13 февраля 2012

Возможно, вам нужен (неписаный) третий вариант.

  1. Используйте хранимую процедуру ( в PostgreSQL, функция ) для размещения заказа. Внутри функции используйте (вероятно) столько сериализуемых транзакций , сколько вам нужно.

Даже если вы выполняете эту работу на прикладном уровне, вам все равно необходимо выполнять всю проверку и отправку в одной транзакции, возможно, в одной сериализуемой транзакции.

В зависимости от вашего приложения сериализуемые транзакции могут не работать для вас. Некоторые интернет-продавцы принимают заказ, не гарантируя, что у него достаточно запасов для его заполнения. Позже вы можете получить электронное письмо с сообщением о том, что что-то было заказано. (Просто что-то иметь в виду.)

Общая информация о транзакциях PostgreSQL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...