(tx_id, user_id, money_income)
values (:tx_id, :user_id, :money_income) on conflict do nothing
returning user_id, money_income
)
update balances as b
set money_balance=b.money_balance - (select h.money_income from h)
where b.user_id = (select h.user_id from h)
and b.money_balance - (select h.money_income from h) >= -b.money_overdraft
Всем привет, есть идеи как переписать этот запрос так, чтобы если не произошло изменения в таблице balance (не нашлось записи попадающей под условия), вставка в таблицу history отменялась?
поменять местами insert и update - update в with insert, на основе его returning
главное с параметрами не запутаться... Спасибо, попробую.
В update условие нужно ещё с exist в history
а, стоп, не получится так, если произошёл конфликт при вставке в history, придётся отменять апдейт balance.
NOT exist в update сделайте
Обсуждают сегодня