Во-первых, как уже сказал
Sumor, вам нужно подумать прежде всего о транзакционности операции, ваша задача - уменьшение значения Долга при занесении платежа - классический случай выполнения нескольких изменений в рамках одной транзакции. Так что это операцию вполне можно выполнить и на уровне приложения. С триггером могут быть свои заморочки - например, если впоследствии заходите удалить часть записей о платежах или перезалить их без изменения долга - то триггер придется отключить. Или как сказал
Sumor, можно отключить их случайно и не заметить. С деньгами таких ситуаций надо избегать еще при проектировании. В общем конечно триггеры - вполне приемлемый способ обновления вычисляемых данных (долг - это именно такое значение), но я думаю в приложения, критичных к точности данных, лучше от них воздержаться.
Или же вам подойдут хранимые процедуры - тогда логика изменения долга и добавления платежа будет более очевидной, и на уровне БД. Тогда вам нужно будет ограничить доступ к основным таблицам, чтобы случайно их никто не поменял, а все изменения допускать только с использованием хранимок. Этот подход менее масштабируемый, чем логика на уровне приложения, но более надежный, если у вас большой проект и много разработчиков - у БД в этом случае будет свой слой безопасности.