![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Rollback de trigger si falla mi transacción
Buen día, agradezco el tiempo que te tomas para leer mi problema, espero opines o me des un indicio para resolverlo.
Tengo 3 insert a diferentes tablas mysql (t1, t2, t3) mediante una transacción debido a que se relacionan por medio de un folio y deben insertarse los 3 o ninguno. En t2 tengo un trigger after insert. Entonces si mi transacción falla en el insert t3 mi trigger en t2 ya se ejecutó, al hacer rollback no se inserta la información en t1,t2 y t3 pero mi trigger ya hizo su tarea. Cómo puedo hacer rollback en mi trigger si mi transacción hace rollback ? Gracias de antemano. Saludos. |
#2
|
||||
|
||||
En teoría, con cualquier base de datos que cumpla con las normas sql (firebird, postgresql, oracle, mssql, etc.) no tendrías que hacer nada, supongo que será alguna característica de mysql.
Me parece recordar que mysql tiene varias "formas" distintas de trabajar, seguramente va por ahí el asunto.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal Última edición por Casimiro Notevi fecha: 22-07-2021 a las 13:21:14. |
#3
|
||||
|
||||
¿Con qué BBDD estás trabajando?
Lo lógico tal como comenta [Casimiro] es que si los INSERT van en la misma transacción, los triggers asociados se incluyan en esa misma transacción, por lo tanto, el rollback debería deshacerlo todo.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#4
|
||||
|
||||
Gracias Casimiro y gracias Neftalí por sus respuestas.
Neftalí estoy trabajando con MySQL. Leyendo sus comentarios recordé que las transacciones en MySQL las tablas deben ser InnoDB y mis 3 tablas (t1,t2 y t3) si son pero el trigger en t2 que envía información a otra tabla después del insert es MyISAM entonces pienso que pudiese ser que por eso el rollback no se aplica en ella. Mi código delphi no tiene nada de extra ordinario:
Y el trigger en la tabla detalle envía información a otra tabla que es MyISAM que concentra datos para reportes. Cambiaré el motor de almacenamiento, haré pruebas y les comento. Muchas gracias por su tiempo. |
#5
|
||||
|
||||
Cita:
Efectivamente, a eso me refería con este comentario: A ver si es eso.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#6
|
||||
|
||||
Gracias infinitas
![]() Las tablas deben ser InnoDB para que el rollback las afecte. Éste hilo se puede cerrar. Saludos y nuevamente gracias por su tiempo. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
commit y rollback | anubis | Varios | 0 | 22-08-2012 15:26:38 |
RollBack Retaining | marcial | Firebird e Interbase | 2 | 18-11-2008 21:02:29 |
RollBack con más de una transacción | kikodelphi | MS SQL Server | 2 | 12-10-2005 20:24:25 |
Uso adecuado de Rollback | rochi | Firebird e Interbase | 4 | 20-11-2004 20:10:55 |
Un fallo en un Trigger ¿ deshace la transacción ? | guillotmarc | Firebird e Interbase | 2 | 03-09-2003 15:01:59 |
![]() |
|