Forums Últimos mensajes - Powered by IBM
 

Transacciones en triggers

18/01/2008 - 20:20 por Paco | Informe spam
Hola a todos

Tengo un pequeño problema.

Estoy trabajando con SQL 2005.
Tengo unos triggers On Delete que controlan una serie de referencias en
tablas. Me pasa que cuando ejecuto un delete de una tabla el trigger se lanza
y me devuelve error pero aún y así se elimina el registro.
¿Tengo que configurar algo en SQL para que los triggers estén implicitos en
la transacción del registro que los provoca?
Todo esto me pasa en el sql management studio.
He probado de poner en mi programa un begin y end transaction y no borra el
registro. Por eso he pensado que a lo mejor hay algún parámetro de
configuración que me permita que sql controle este tema sólo.
 

Leer las respuestas

#1 Alejandro Mesa
18/01/2008 - 21:46 | Informe spam
Paco,

Los triggers corren dentro de la transaccion que provoca que se dispare. Si
no abristes una transaccion explicitamente, entonces corre en la transaccion
implicita (cada sentencia corre en su propia transaccion al menos que las
agrupes entre begin tran y commit / rollback). No todos los errores abortan
la transaccion en curso al menos que use SET XACT_ABORT.

Como bien dijistes, debes encerrar la transaccion en un BEGIN TRANSACTION y
capturar errores, para que en el caso requerido puedas hacer ROLLBACK de la
transaccion.


AMB

"Paco" wrote:

Hola a todos

Tengo un pequeño problema.

Estoy trabajando con SQL 2005.
Tengo unos triggers On Delete que controlan una serie de referencias en
tablas. Me pasa que cuando ejecuto un delete de una tabla el trigger se lanza
y me devuelve error pero aún y así se elimina el registro.
¿Tengo que configurar algo en SQL para que los triggers estén implicitos en
la transacción del registro que los provoca?
Todo esto me pasa en el sql management studio.
He probado de poner en mi programa un begin y end transaction y no borra el
registro. Por eso he pensado que a lo mejor hay algún parámetro de
configuración que me permita que sql controle este tema sólo.

Preguntas similares