update - El desencadenante almacenado de desencadenador mysql ya está siendo utilizado por la instrucción que invoca el desencadenador almacenado
trigger mysql w3schools (2)
Además, debe asegurarse de no tener otros procedimientos o funciones que realicen actualizaciones en la tabla a la que se asigna este procedimiento en particular o termina en una recursión. Por ejemplo
create trigger trig1 After update on table1 FOR EACH ROW
BEGIN
UPDATE table2 SET colum1 = column1 + 1
END;
create trigger trig2 After update on table2 FOR EACH ROW
BEGIN
UPDATE table1 SET colum2 = column2 + 1
END;
Esto terminará en una recursión, así que ten cuidado con los procedimientos y funciones almacenados existentes.
Quiero configurar un disparador para que, si en una actualización el campo de predicción es = 3, el desencadenador cambie el valor a 4 y lo guarde en la base de datos. El disparador está abajo.
Por alguna razón sigo recibiendo un error que dice:
#1442 - Can''t update table ''tzanalytic/_forecast/_cached'' in stored
function/trigger because it is already used by statement which invoked
this stored function/trigger.
¿Está configurado de la manera correcta?
delimiter $$
CREATE TRIGGER no_BoW BEFORE UPDATE ON t FOR EACH ROW
BEGIN set @prediction = new.prediction;
UPDATE t SET t.prediction = (SELECT IF(@prediction = ''3'', ''4'', @prediction)) WHERE t.event_id = new.event_id AND t.price_tier = new.price_tier; END;
$$ delimiter ;
Los desencadenadores de MySQL no pueden manipular la tabla a la que están asignados. Todos los demás principales DBMS soportan esta característica, así que con suerte MySQL agregará este soporte pronto.
http://forums.mysql.com/read.php?99,122354,240978#msg-240978