Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

El trigger INSERT no me tira

Estas en el tema de El trigger INSERT no me tira en el foro de Mysql en Foros del Web. Hola foreros. Quiero crear un trigger q me controle el cambio de nicks en la tabla usuarios, y si los nicks son diferentes en usuarios, ...
  #1 (permalink)  
Antiguo 24/10/2008, 08:22
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 17 años, 1 mes
Puntos: 5
El trigger INSERT no me tira

Hola foreros.
Quiero crear un trigger q me controle el cambio de nicks en la tabla usuarios, y si los nicks son diferentes en usuarios, pos inserto el nick viejo, el nuevo y otros datos en la tabla control_nick. La sintaxis es la siguiente

create trigger cambia_nick after update on usuarios
for each row begin
if (old.user != new.user) then
insert control_nicks (viejo_nick,nuevo_nick,email,fecha) values (old.user,new.user,email,now());
end if;

Y me tira el consabido error 1064:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'insert inno_cambia_nicks (viejo_nick,nuevo_nick,email,fecha) values (old.user,ne' at line 4

Llevo dos días googleando, busqué en las FAQs del foro, hice una búsquda por los temas del foro y nada q me oriente.
salu2 y gracias por adelantado
  #2 (permalink)  
Antiguo 24/10/2008, 09:13
Avatar de 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: El trigger INSERT no me tira

Dos cosas:
1. Te estás olvidando de una parte de la sentencia INSERT (falta el INTO ):
Código sql:
Ver original
  1. DELIMITER $$
  2.  
  3. CREATE TRIGGER cambia_nick AFTER UPDATE ON usuarios
  4. FOR EACH ROW
  5. BEGIN
  6. IF  (OLD.USER != NEW.USER) THEN
  7. INSERT INTO control_nicks (viejo_nick,nuevo_nick,email,fecha)
  8. VALUES(OLD.USER,NEW.USER,email,now());
  9. END IF;
  10. END$$
  11.  
  12. DELIMITER ;

2. Es preferible no utilizar "user" como nombre de un campo en una tabla propia, porque es parte de las palabras reservadas, y el resultado puede ser errático.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 24/10/2008, 09:23
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 17 años, 1 mes
Puntos: 5
Respuesta: El trigger INSERT no me tira

Gracias gnzsoloyo por responder.
Bueno cambié el nombre del campo a usuarios e inserté el INTO (ya lo tenía, error mío cuando copié para el foro) y me sigue tirando el mismo error, en la misma línea del "insert" (insert into etc etc)
Uso mysql 5.0.32, si es de ayuda
salu2
  #4 (permalink)  
Antiguo 24/10/2008, 10:34
Avatar de 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: El trigger INSERT no me tira

Probé el script en una tabla creada al efecto, denominando el campo de una forma accesible y en una versión 5.0.27 (anterior a la tuya) el script corre correctamente. No hubo errores.
Solamente me queda suponer que el problema se deba a la interfase que usas para cargarlo.
Pregunta: ¿Usas alguna interfase, lo envías por código o lo cargas por consola?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 24/10/2008, 11:03
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 17 años, 1 mes
Puntos: 5
Respuesta: El trigger INSERT no me tira

Uso phpmyadmin 2.9.1.1, y a la verdad q ahora si q me vuelvo loco jejeje
No entiendo q pueda estar pasando
  #6 (permalink)  
Antiguo 24/10/2008, 15:49
Avatar de 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: El trigger INSERT no me tira

Prueba bien esto:
1. En la ventana del script de phpMyAdmin escribe :
Código sql:
Ver original
  1. CREATE TRIGGER cambia_nick AFTER UPDATE ON usuarios
  2. FOR EACH ROW
  3. BEGIN
  4. IF  (OLD.USER != NEW.USER) THEN
  5. INSERT INTO control_nicks (viejo_nick,nuevo_nick,email,fecha)
  6. VALUES(OLD.USER,NEW.USER,email,now());
  7. END IF;
2. debajo de la ventana, en el textbox al lado de "Delimiter", pon $$

Prueba ejecutarlo así.

END$$
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 27/10/2008, 07:39
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 17 años, 1 mes
Puntos: 5
Respuesta: El trigger INSERT no me tira

gnzsoloyo, ERES UN DIOS MACHO
Ya tira perfecto, no había respondido porq me tomé el fin de semana completo jejejeje.
Lo primero q hice fue esto cuando llegué y me trabajó PERFECT
Gracias macho
salu2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:09.