¿Cómo mantener un registro de log después de hacer rollback?

03/05/2006 - 13:50 por Santiago Sanz | Informe spam
¡Hola!

Tengo esta transacción:

BEGIN TRANSACTION

INSERT INTO logs (message) VALUES ('SQL insertará un nuevo registro')


INSERT INTO productos (id, name) VALUES (1, 'libro')

IF @@ERROR <> 0
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION


pero quiero mantener el apunte de log incluso si se ejecuta el "rollback".
¿Sabéis cómo puedo hacer eso?

¡Muchas gracias!

Santi
 

Leer las respuestas

#1 Alejandro Mesa
03/05/2006 - 14:01 | Informe spam
Santiago,

Saca la sentencia que inserta en la tabla "logs" fuera de la transaccion
explicita.

INSERT INTO logs (message) VALUES ('SQL insertará un nuevo registro')

BEGIN TRANSACTION

INSERT INTO productos (id, name) VALUES (1, 'libro')

IF @@ERROR <> 0
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION

Para una unica sentencia, no hace falta una transaccion explicita. Esta
sentencia se ejecuta sobre una transaccion y si esta falla, SQL Server hara
el rollback automaticamente.


AMB

"Santiago Sanz" wrote:

¡Hola!

Tengo esta transacción:

BEGIN TRANSACTION

INSERT INTO logs (message) VALUES ('SQL insertará un nuevo registro')


INSERT INTO productos (id, name) VALUES (1, 'libro')

IF @@ERROR <> 0
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION


pero quiero mantener el apunte de log incluso si se ejecuta el "rollback".
¿Sabéis cómo puedo hacer eso?

¡Muchas gracias!

Santi

Preguntas similares