/ / update trigger para mantener la URL correcta en el campo - mysql, triggers

actualizar el activador para mantener la url correcta en el campo - mysql, activadores

Estoy buscando una solución a corto plazo mientras trabajo¿Por qué una sincronización está configurando un campo incorrecto en una tabla? Preparé un disparador y agradecería algún comentario al respecto, y cualquier corrección necesaria o mejores estrategias.

     CREATE TRIGGER urlcorrect AFTER INSERT ON sym_node
FOR EACH ROW BEGIN
IF NEW.sync_url= "http://wrongaddress" THEN
UPDATE sym_node SET sync_url= "http://123.456.7.89:1234/etc";
END IF;;
END$
delimiter;

Gracias David

Respuestas

0 para la respuesta № 1

Su disparador está mal de varias maneras.

En primer lugar, creo que desea un disparador ANTES para que pueda arreglar la fila antes de que entre en su tabla.

En segundo lugar, esto:

UPDATE sym_node SET sync_url= "http://123.456.7.89:1234/etc";

actualizaría cada sync_url en el sym_node mesa y eso no es lo que quieres. Y no creo que MySQL le permita ACTUALIZAR una tabla dentro de un activador en esa tabla (alguien me corrija si me equivoco en esto, por favor). Además, debe usar comillas simples para literales de cadena, aunque MySQL le permitirá usar comillas dobles, no tome malos hábitos del comportamiento laxo de MySQL. Desea:

set new.sync_url = "http://123.456.7.89:1234/etc";

Al juntar todo eso, obtienes esto:

delimiter $
create trigger urlcorrect before insert on sym_node
for each row begin
if new.sync_url = "http://wrongaddress" then
set new.sync_url = "http://123.456.7.89:1234/etc";
end if;
end;
$
delimiter ;