Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Triggers Y Procesos (https://www.clubdelphi.com/foros/showthread.php?t=27743)

micayael 29-11-2005 18:03:39

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?

lbuelvas 29-11-2005 18:12:30

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.

micayael 29-11-2005 18:16:55

ok. gracias.
Me sacaste de la duda

Migpal 29-11-2005 23:40:39

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.

rastafarey 30-11-2005 21:58:30

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)

Luis Castillo 03-12-2005 00:40:35

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..

lbuelvas 03-12-2005 16:40:01

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.


La franja horaria es GMT +2. Ahora son las 08:55:41.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi