Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-11-2005
micayael micayael is offline
Miembro
 
Registrado: sep 2005
Posts: 68
Poder: 19
micayael Va por buen camino
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?
Responder Con Cita
  #2  
Antiguo 29-11-2005
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 377
Poder: 21
lbuelvas Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 29-11-2005
micayael micayael is offline
Miembro
 
Registrado: sep 2005
Posts: 68
Poder: 19
micayael Va por buen camino
ok. gracias.
Me sacaste de la duda
Responder Con Cita
  #4  
Antiguo 29-11-2005
Migpal Migpal is offline
Miembro
 
Registrado: jul 2005
Ubicación: Colombia
Posts: 91
Poder: 19
Migpal Va por buen camino
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.
Responder Con Cita
  #5  
Antiguo 30-11-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 03-12-2005
Luis Castillo Luis Castillo is offline
Miembro
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 102
Poder: 21
Luis Castillo Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 03-12-2005
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 377
Poder: 21
lbuelvas Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 02:06:20.


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
Copyright 1996-2007 Club Delphi