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 08-01-2008
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Generadores, disparadores y el control transacional

Si tengo dos generadores uno(gen1) lo incremento en un trigger before y el segundo(gen2) lo incremento en el after se puede dar un caso extremo que no ocurra el incremento del segundo generador por algun error o bajon de corriente o algo por el estilo.

La pregunta la hago ya que los generadores se escapan del control transacional y los disparadores hasta donde tengo entendido se manejan en un proceso atomico osea o todo se hace bien o no se hace. pero se trata de generadores y aqui la cosa en diferente.

Si no me explique bien por favor me lo notifican.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #2  
Antiguo 08-01-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Me imagino que si podría darse el caso que el segundo no se incremente... y sería en el caso que exista un apagón y no llegue a ejecutarse el disparador after...


Saludos...
Responder Con Cita
  #3  
Antiguo 08-01-2008
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

En este caso el primero quedaria incrementado o no. Para ese momento ya se abra bajado la informacion a disco.

No se pregunto.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #4  
Antiguo 09-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
si, quedaría incrementado.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 09-01-2008
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
resp

Gracias por sus respuestas.

Tengo qu einvestigas unas cosas mas acerca de las arquitecturas.

Luego que lea un poco mas explico las dudas que me surgieron y como las solucione.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #6  
Antiguo 09-01-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
http://www.firebirdsql.org/pdfmanual...ator-Guide.pdf
Página 7

Cita:
Generators and transactions
As said, generators live outside of transaction control. This simply means you cannot safely
“rollback” generators inside a transaction. There may be other transactions executing at the same time
that change the value while your transaction runs. So once you have requested a generator value, consider
it as “gone forever”.
When you start a transaction and then call a generator and get a value of – let's say – 5, it will remain
at that value even if you roll back the transaction (!). Don't even think of something like “OK, when
I rollback, I can just do GEN_ID(mygen,-1) afterwards to set it back to 4”. This may work most of the
time, but is unsafe because other concurrent transactions may have changed the value in between. For
the same reason it doesn't make sense to get the current value with GEN_ID(mygen,0) and then increment
the value on the client side.
Los generadores trabajan fuera de las transacciones, por lo que puede darse el caso de que haya pasado por el Trigger Before, incrementado el valor y luego haya generado una excepción que no ejecute el trigger After.

No es necesario ningún corte de corriente ni nada especial para generar este error.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ayuda sobre trigger (disparadores) gabrielflowers PHP 9 20-10-2007 01:43:43
ERROR ORA-04082: referencias NEW u OLD no permitidas en disparadores a nivel de tabla Jose Manuel Oracle 4 27-08-2007 16:07:20
generadores karocs Firebird e Interbase 2 07-07-2006 19:29:11
¿Pueden tener disparadores (triggers) las vistas “Union”? Al González Firebird e Interbase 1 19-05-2006 22:29:26
Zeos y disparadores xerkan Firebird e Interbase 1 23-09-2003 10:49:54


La franja horaria es GMT +2. Ahora son las 05:42:42.


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