Pues yo lo veo como un trigger before update e insert. Así no tienes que llamarlo nunca. y como es un trigger "before" sobre la misma tabla y registro, nunca tendrías abrazos mortales.
Ventajas:
- No tienes que arrancar manualmente el proceso por cada cliente. (se hace en automático al insertar/modificar un registro en CLIENTES_CUENTA).
- Como solo actúa sobre una tabla y registro, es imposible que haya un deadlock
- Es muy simple el trigger:
Código SQL
[-]
if (NOT new.DEBE IS NULL) then TMP_SALDO = :TMP_SALDO - new.DEBE;
if (NOT new.HABER IS NULL) then TMP_SALDO = :TMP_SALDO + new.HABER;
SALDO= :TMP_SALDO
(más o menos)
Saludos