SQL - DETENER DESENCADENADORES EN SECUENCIA

   
Vista:

DETENER DESENCADENADORES EN SECUENCIA

Publicado por John (3 intervenciones) el 20/04/2009 19:43:29
Buenas forista..

Tengo un problema, se cuenta con una tabla de catalogos, que se maneja por empresas, se requiere que cualquier cambio en una empresa se refleje en las demás.

Una posibilidad es por medio de trigger que se ejecuta al contarse con un insert o update, realiza otro insert o update, depende si exista o no, en la misma tabla, a las demas empresas, lo cual genera un bucle de update's ya que al realizar el insert a la empresa 1, esta realizar el insert en la empresa 2 y empresa 3, los cuales, tambien ejecutan el mismo trigger para las otras dos empresa y esto genera un bucle de constante de update's.

Mi pregunta es si se puede de alguna manera, realizar el insert, e indicarle que no ejecute nuevamente el trigger a la hora de realizar los insert's o update's cuando se copie para las demas empresas ??.

De ante mano, gracias por sus respuestas ...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Respuesta

Publicado por Leopoldo Taylhardat (89 intervenciones) el 20/04/2009 20:41:40
Saludos...
Necesitas usar un cursor... en el select del cursor seleccionas las empresas que no corresponden a la que tienes en proceso...
La forma de programar el cursor depende del dialecto de la base de datos... TransactSQL, PL/SQL,Postgresql... etc...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Respuesta

Publicado por John (3 intervenciones) el 20/04/2009 21:26:24
Leopoldo, gracias por tu pronta respuesta, te detallo un poco lo que se desea.

Estoy utilizando un cursor dentro para realizar la replica de los registros a las demas empresas, eceptuando la empresa en la cual se ha realizado el cambio.

El problema viene que esta replica de datos, se debe dar desde cualquier empresa que se haya realizado alguna actualización, la cual actualizará la información en las demas empresas. Lo que se requiere es que al momento de realizar la actualización en alguna empresa, este procederá a insertar o acutalizar el registro en las demas empresas ( la misma tabla ) lo cual ejecuta el mismo trigger nuevamente, generandose un bucle de actualizaciones.. esto no se quiere, se desea que solo se ejecute el trigger al momento de haber ingresado el registro para una empresa y este registra en las demas empresas sin que estos insert's activen nuevamente este trigger.

De ante mano gracias por la respuesta..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Respuesta

Publicado por pacopaz (143 intervenciones) el 21/04/2009 00:20:48
Puedes deshabilitarlo y luego rehabilitarlo. Lee estas páginas:
http://msdn.microsoft.com/es-es/library/ms189748.aspx <-- deshabilitarlo
http://msdn.microsoft.com/es-es/library/ms182706.aspx <-- habilitarlo

Espero que te sirva.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Respuesta

Publicado por Leopoldo Taylhardat (89 intervenciones) el 21/04/2009 20:26:47
Saludos.
Trabaja el cursor en un bucle con la condicion de que no busque el dato modificado (o insertado), luego haces el insert (o update) para el primer registro del cursor (o buscas el valor minimo, ej. la empresa) que no tenga hecho el proceso...
Espero que te sirva...
Llega un momento en que no conseguira a quien actualizar o empresa en la cual insertar...
espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar