Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Deshabilitar trigger

Estas en el tema de Deshabilitar trigger en el foro de Mysql en Foros del Web. Buenas tardes. Alguien me puede decir, por favor, como deshabilitar un trigger en MySQL 5.0? Desde un procedimiento almacenado cambio varios campos de la tabla ...
  #1 (permalink)  
Antiguo 02/07/2009, 08:16
 
Fecha de Ingreso: julio-2009
Mensajes: 6
Antigüedad: 14 años, 9 meses
Puntos: 0
Deshabilitar trigger

Buenas tardes. Alguien me puede decir, por favor, como deshabilitar un trigger en MySQL 5.0? Desde un procedimiento almacenado cambio varios campos de la tabla que contiene el trigger y el trigger se vuelve a lanzar. El trigger que tengo definido es el siguiente:

DELIMITER $$

CREATE TRIGGER Actualizar BEFORE DELETE ON peticiones

FOR EACH ROW BEGIN

IF (DISABLE_TRIGGERS IS NULL) THEN

UPDATE tipos_de_peticiones SET tipos_de_peticiones.cantidad = tipos_de_peticiones.cantidad - 1
WHERE Left(tipos_de_peticiones.identificador,3) = Left(OLD.identificador,3);

INSERT INTO tabla_auxiliar (id, Identificador) VALUES (OLD.id, OLD.Identificador);

END IF;

END $$

DELIMITER;

Como veis está definido cuando elimino y no cuando actualizo. Por eso no entiendo que se ejecute el trigger.

El procedimiento almacenado es el siguiente:

DELIMITER $$

CREATE PROCEDURE ReOrdenar()
BEGIN


DECLARE done INTEGER DEFAULT 0;
DECLARE a CHAR(10);
DECLARE b INTEGER;
DECLARE c CHAR(255);
DECLARE cur1 CURSOR FOR SELECT id, Identificador FROM tabla_auxiliar;
DECLARE cur2 CURSOR FOR SELECT id FROM tabla_auxiliar;
DECLARE cur3 CURSOR FOR SELECT Max(id) FROM peticiones;


DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

OPEN cur1;
OPEN cur2;
OPEN cur3;


SET DISABLE_TRIGGERS=1;

FETCH cur1 INTO b,a;

REPEAT

UPDATE peticiones SET peticiones.identificador = Concat(Left(peticiones.identificador,4),RTRIM(SUBS TRING(peticiones.identificador,5))-1)
WHERE peticiones.id > b and Left(peticiones.identificador,3)=Left(a,3);

DELETE FROM historico_descripcion WHERE historico_descripcion.id_peticion=b;

FETCH cur1 INTO b,a;

UNTIL done END REPEAT;


FETCH cur2 INTO b;

REPEAT

UPDATE peticiones SET peticiones.id = peticiones.id - 1
WHERE peticiones.id >= b;

UPDATE historico_descripcion SET historico_descripcion.id_peticion = historico_descripcion.id_peticion - 1
WHERE historico_descripcion.id_peticion >= b;

FETCH cur2 INTO b;

UNTIL done END REPEAT;


FETCH cur3 INTO b;

ALTER TABLE peticiones AUTO_INCREMENT=b+1;

SELECT MAX(id) FROM peticiones FOR UPDATE;

DELETE FROM tabla_auxiliar;


CLOSE cur1;
CLOSE cur2;
CLOSE cur3;

SET DISABLE_TRIGGERS=NULL;

END $$

DELIMITER;


Muchas gracias a todo por vuestro tiempo. Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:26.