Есть база данных с наименованиями и количеством на складе товара. Клиент А открывает
количество товара для изменения, его клиентское приложение блокирует это количество путем запуска запроса
UPDATE remainders SET id=id WHERE id=?
в транзакции с параметром NOWAIT.
После этого клиент Б пытается продать этот товар, его клиентское приложение уменьшает количество товара путем запроса
UPDATE remainders SET remainder=remainder-1 WHERE id=?
в транзакции
БЕЗ параметра NOWAIT. Транзакция клиента Б подвисает в ожидании, когда транзакция клиента А освободит ресурс, и висит так долго (десятки секунд минимум). После этого клиент А завершает транзакцию COMMIT'ом, после чего клиент Б получает от FireBird ошибку "deadlock; update conflicts with concurrent update".
Вопрос: как с этим бороться? Хотелось бы, чтобы после COMMIT'а клиента А транзакция клиента Б все-таки завершилась успешно.