FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Triggers Y Procesos
Hola
Un trigger tengo entendido que es una misma transaccion. Si yo tengo un trigger before insert y hago validaciones y si no hay problemas hago procesos que se realizan en otras tablas, si hay un error en algun momento, todos los procesos en otras tablas tambien vuelven a su estado original verdad? o solo los procesoss de esa tabla se toman en cuenta en el trigger? |
#2
|
|||
|
|||
Correcto, un trigger puede lanzar actualizaciones a otra/otras tablas y estas actualizaciones puende lanzar a su vez otras actualizaciones y asi sucesivamente.
Si alguna actualizacion falla, la base de datos queda en el estado en que se encontraba antes de dispararse el primer trigger.
__________________
Luis Fernando Buelvas T. |
#3
|
|||
|
|||
ok. gracias.
Me sacaste de la duda |
#4
|
|||
|
|||
Depende del gestor y del el modo de configuracion de las transacciones, en Oracle si no estoy mal, es posible que el trigger falle pero sin borrar lo que ya se ha modificado, nose como se llama ese modo de operar pero asi es. De todas maneras todos los comportamientos son configurables.
|
#5
|
||||
|
||||
Resp
Si el triger falla entonces falla todo ya que esto esta envuelto en una misma transsacion.
y oracle hace lso mismo que firebird ya que esto n e suan propieda de oracle o de firebir esto e sun regla que existe para todo slao manejadores d ebase d edatos que siaganel estandar(que no creo que oracle la rompa)
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
#6
|
|||
|
|||
Pero....
Ok...todo lo que han dicho esta tan claro como el agua....Pero quisiera hacer una pregunta (debido a que soy un principiante en interbase):
SE menciono que el trigger es una transaccion...es decir que no tengo necesidad de colocar las clausulaas STARTRANSACCION (o el correspondiente)..COMMIT...ROLBACK ETC...para que el triguer y toda la secuencia de acciones sean atomicas.? Muchas gracias..
__________________
LK |
#7
|
|||
|
|||
El commit / rollback se deben hacer por fuera de los triggers, me explico, supongamos que tu inicias unas sesion de IBExpert, haces algunas modificaciones en tablas que disparan unos triggers, si no se presenta error desde los triggers y das un rollback entonces se deshacen los cambios.
Si estas modificando un registro y pichas el boton de grabar el registro y se dispara un error desde el trigger, vas a observar que el registro continua en modo de edicion, debido a que el cambio no fue aceptado. Lo mismo pasa cuando estas trabajando con delphi, los cambios se fijan a la base de datos solo cuando en tu programa se ejecuta el metodo Commit o Commit Retaining (si usas los componentes IBX), de lo contrario si haces cambios desde tu programa a los datos y sales sin mas ni mas, cuando vuelvas a entrar a tu programa ves que no paso nada. Es un error muy comun cuando se esta en esta etapa de aprendizaje, a mi me paso y estuve dias como loco para saber que pasaba.
__________________
Luis Fernando Buelvas T. |
|
|
|