Tengo un SP que dentro de una transacción inserta un registro en una
tabla. Luego del insert se controla la variable @@error, que si es <>
a cero, hace rollback y finaliza el SP (goto fin)
Esa tabla tiene un trigger, que luego de hacer algunos cálculos,
actualiza un registro en una segunda tabla tabla.
Luego de actualizar ese el registro, el trigger pregunta por @@error,
que si es <> a cero, hace un raiserror(mensaje, 16, -1) y finaliza la
ejecucion del trigger (goto fin)
En la segunda tabla hay otro trigger, que controla algunas
condiciones, y si no se cumple lo que espera, hace un raiserror y
finaliza la ejecucion del trigger (goto fin).
El problema se da cuando el trigger de la segunda tabla detecta una
inconsistencia según sus reglas de negocio. El mensaje se devuelve a
la aplicación, ya que el SQLEXEC (es un frontend en visual fox)
detecta el error y mi aplicación se lo muestra al usuario. Pero los
datos se almacenan en el motor como si no hubiera habido ningun
error.
Es decir, el mensaje de error llega al frontend, pero el SP NO detecta
que hubo un error y continúa su ejecución.
Que me esta faltando?
La opción XACT_ABORT del SQL esta habilitada.
Muchas gracias
Leer las respuestas