Ver Mensaje Individual
  #21 (permalink)  
Antiguo 01/10/2013, 12:31
daicon
 
Fecha de Ingreso: julio-2010
Mensajes: 134
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: TRigger. Set @var en consulta.

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?