triggers!!! un caso para la araña, jeje

11/08/2003 - 21:51 por davidojeda | Informe spam
como evitar que un trigger for update llame a otro trigger for
update.. y se genere un ciclo infinito



supongamos, una tabla de empleados, en donde


tenga 2 triggers for update
- uno para actualizar la edad
- otro para actualizar la antiguedad

si un usuario ejecuta un "update empleado set fechanac=x where
idempleado=1"

supongo que sucede lo sig
1. se actualiza el registro
2. se dispara el trigger que actualiza la edad
3. se dispara el trigger que actualiza la antiguedad
... ¿ se repetiran en un ciclo infinito de nuevo los pasos 2 y 3?

disculpen mi ignorancia pero esta duda no me la quiero quedar para
siempre..

como puedo hacer para evitar eso

que una tabla tenga 2 ( o mas ) triggers for update y se llamen en
ciclo infinito


gracias por su ayuda
saludos

Preguntas similare

Leer las respuestas

#1 Emilio Boucau
11/08/2003 - 22:52 | Informe spam
David,

mira Recursive Triggers en los Books On Line.

RECURSIVE_TRIGGERS
When set to ON, triggers are allowed to fire recursively. When set to OFF
(default), triggers cannot be fired recursively.



Note Only direct recursion is prevented when RECURSIVE_TRIGGERS is set to
OFF. To disable indirect recursion, you must also set the nested triggers
server option to 0.


The status of this option can be determined by examining the
IsRecursiveTriggersEnabled property of the DATABASEPROPERTYEX function.

Saludos !

Emilio Boucau
Microsoft MVP SQL Server
http://www.portalsql.com
PASS Spanish Group
http://www.sqlpass.org

Buenos Aires - Argentina


begin 666 note.gif
M1TE&.#EA# `+`(#_`(2&`,# P"'Y! $```$`+ `````,``L`0 (:C(\(H'S[
68%R0&ED;M7,'[%S2YW#1)VJ;4P``.P``
`
end
Respuesta Responder a este mensaje
#2 Chente
12/08/2003 - 16:33 | Informe spam
David, y no podrias meter la edad y antiguegad en el mismo trigger???


Saludos.


Vicente López



"David Ojeda" escribió en el mensaje
news:
como evitar que un trigger for update llame a otro trigger for
update.. y se genere un ciclo infinito



supongamos, una tabla de empleados, en donde


tenga 2 triggers for update
- uno para actualizar la edad
- otro para actualizar la antiguedad

si un usuario ejecuta un "update empleado set fechanac=x where
idempleado=1"

supongo que sucede lo sig
1. se actualiza el registro
2. se dispara el trigger que actualiza la edad
3. se dispara el trigger que actualiza la antiguedad
... ¿ se repetiran en un ciclo infinito de nuevo los pasos 2 y 3?

disculpen mi ignorancia pero esta duda no me la quiero quedar para
siempre..

como puedo hacer para evitar eso

que una tabla tenga 2 ( o mas ) triggers for update y se llamen en
ciclo infinito


gracias por su ayuda
saludos
Respuesta Responder a este mensaje
#3 César toledo
12/08/2003 - 18:23 | Informe spam
En las opciones de la base de datos

revisa que no tengas marcada la opcion.. triggers recursivos


Saludos

"David Ojeda" escribió en el mensaje
news:
como evitar que un trigger for update llame a otro trigger for
update.. y se genere un ciclo infinito



supongamos, una tabla de empleados, en donde


tenga 2 triggers for update
- uno para actualizar la edad
- otro para actualizar la antiguedad

si un usuario ejecuta un "update empleado set fechanac=x where
idempleado=1"

supongo que sucede lo sig
1. se actualiza el registro
2. se dispara el trigger que actualiza la edad
3. se dispara el trigger que actualiza la antiguedad
... ¿ se repetiran en un ciclo infinito de nuevo los pasos 2 y 3?

disculpen mi ignorancia pero esta duda no me la quiero quedar para
siempre..

como puedo hacer para evitar eso

que una tabla tenga 2 ( o mas ) triggers for update y se llamen en
ciclo infinito


gracias por su ayuda
saludos
Respuesta Responder a este mensaje
#4 davidojeda
12/08/2003 - 19:33 | Informe spam
claro que eso haria!!!

pero solo era un ejemplo ficticio .


vaya pues, es que no encontre otro ejemplo mas sencillo para exponer mi duda..


:)


saludos..
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida