Vamos ...a ver, espera... Hay algo que no entiendo, y creo que no debería de haber ese problema:
Mira el trigger que debo de poner en todas las BD:
Código:
After update
BEGIN
IF NEW.name != OLD.name THEN
UPDATE principal.UsuNa SET Jname = NEW.name WHERE Jusername = NEW.username;
END IF;
END
Y ahora el código de BD Principal que será la que propague:
Código:
BEGIN
SET @cont = 0;
IF NEW.Jname != OLD.Jname THEN
IF (SELECT COUNT(*) FROM otra.j25_users WHERE username = OLD.Jusername AND name != NEW.Jname)= 1 THEN
UPDATE otra.j25_users SET NAME = NEW.Jname WHERE username = OLD.Jusername;
SET @cont = @cont + 1;
END IF;
IF (SELECT COUNT(*) FROM pruebas.j25_users WHERE username = OLD.Jusername AND name != NEW.Jname)= 1 THEN
UPDATE pruebas.j25_users SET NAME = NEW.Jname WHERE username = OLD.Jusername;
SET @cont = @cont + 1;
END IF;
IF (SELECT COUNT(*) FROM prugeok.j25_users WHERE username = OLD.Jusername AND name != NEW.Jname)= 1 THEN
UPDATE prugeok.j25_users SET NAME = NEW.Jname WHERE username = OLD.Jusername;
SET @cont = @cont + 1;
END IF;
END IF;
END
Cuando El primer triger se ejecute, lanzara el update a la BD principal.
Este comprobara en el primer IF si ha sido cambiado el campo que necesitamos, si es asi, lanzara a las otras BD el update.
Cuando llegue a la nueva BD a ser propagada, esta se actualizará, y volverá a lanzar el update a la BD principal.
PEEEERO, no entraría en el IF del segundo trigger, ya que los campos no son DIFERENTE. Por lo que no entraría en un BUCLE!!!!!
Es esto correcto?
Si estoy en lo cierto - ¿Qué esta pasando?