Ver Mensaje Individual
  #13 (permalink)  
Antiguo 01/10/2013, 10:27
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: TRigger. Set @var en consulta.

Pues visto y considerando que la cosa se te complica, y para no afectar la funcionalidad de la base, vamos a intentarlo de una forma simple.
partamos que si estás harcodeando el nombre de las bases, y siendo innecesario no sólo cambiar de base, sino también que ni siquiera tiene sentido iterar, podemos intentarlo mas o menos así:
Código MySQL:
Ver original
  1.     SET @cont = 0;
  2.     IF NEW.Jname != OLD.Jname THEN
  3.         IF (SELECT COUNT(*) FROM aux.j25_users WHERE name = OLD.Jname)= 1 THEN
  4.             UPDATE aux.j25_users SET `NAME` = NEW.Jname WHERE `NAME = OLD.Jname;
  5.            SET @cont = @cont + 1;
  6.        END IF;
  7.        IF (SELECT COUNT(*) FROM prugeok.j25_users WHERE name = OLD.Jname)= 1 THEN
  8.            UPDATE prugeok.j25_users SET `NAME` = NEW.Jname WHERE `NAME = OLD.Jname;
  9.             SET @cont = @cont + 1;
  10.         END IF;
  11.         IF (SELECT COUNT(*) FROM pruebas.j25_users WHERE name = OLD.Jname)= 1 THEN
  12.             UPDATE pruebas.j25_users SET `NAME` = NEW.Jname WHERE `NAME = OLD.Jname;
  13.            SET @cont = @cont + 1;
  14.    END IF;
  15. END
A mi entender, al hacer esa iteración te estás complicando mucho.

Incluso, si quieres saber cuál o cuales bases se actualizaron, podemos hacer esto:
Código MySQL:
Ver original
  1.     SET @cont = 0;
  2.     IF NEW.Jname != OLD.Jname THEN
  3.         IF (SELECT COUNT(*) FROM aux.j25_users WHERE name = OLD.Jname)= 1 THEN
  4.             UPDATE aux.j25_users SET `NAME` = NEW.Jname WHERE `NAME = OLD.Jname;
  5.            SET @cont = @cont + 1;
  6.        END IF;
  7.        IF (SELECT COUNT(*) FROM prugeok.j25_users WHERE name = OLD.Jname)= 1 THEN
  8.            UPDATE prugeok.j25_users SET `NAME` = NEW.Jname WHERE `NAME = OLD.Jname;
  9.             SET @cont = @cont + 3;
  10.         END IF;
  11.         IF (SELECT COUNT(*) FROM pruebas.j25_users WHERE name = OLD.Jname)= 1 THEN
  12.             UPDATE pruebas.j25_users SET `NAME` = NEW.Jname WHERE `NAME = OLD.Jname;
  13.            SET @cont = @cont + 5;
  14.    END IF;
  15. END
Esto sería lo devuelto por @cont:
Cita:
- 0: ninguna.
- 1: sólo la primera.
- 3: sólo la segunda.
- 4: la primera y la segunda.
- 5: sólo la tercera.
- 6 la primera y la tercera.
- 8: la segunda y la tercera.
- 9: Todas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 01/10/2013 a las 10:35