Ver Mensaje Individual
  #7 (permalink)  
Antiguo 07/10/2011, 04:23
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: 16 años, 4 meses
Puntos: 2658
Respuesta: Provocar un update con dos filas de la misma tabla

Es que lo que debe usarse no es:
Código MySQL:
Ver original
  1. NEW.c_mess = `c_mess` AND NEW.m_to = id_user AND NEW.id_user = `m_to`
ni tampoco
Código MySQL:
Ver original
  1. NEW.c_mess = c_mess AND NEW.m_to = id_user AND NEW.id_user = m_to
sino
Código MySQL:
Ver original
  1. NEW.c_mess = NEW.`c_mess` AND NEW.m_to = NEW.id_user AND NEW.id_user = NEW.`m_to`
En un TRIGGER los únicos parámetros que existen son o bien los campos del registroo entrante (INSERT y UPDATE) o los del antiguo (UPDATE y DELETE). Pero siempre, en todos los casos su nombre debe estar precedido por NEW u OLD, según el caso.
Cualquier otro nombre debe ser, o bien una variable local declarada, o un campo de una tabla invocada en una sentencia dentro del TRIGGER (que no puede ser la propia tabla).
Cambiar de versión de MySQL no alterará nada, porque el error no es de versiones sino que estás escribiendo mal la invocación a los campos.

Por otro lado un tema de lógica de INSERT: Si estás haciendo una comparación dentro del propio INSERT, ¿por qué no resuelves eso en la programación de la aplicación y le quitas a la base una responsabilidad que no se necesita?
A fin de cuentas esa validación bien la puedes hacer antes de enviar los datos, ya que sólo estás operando con los VALUE que mandas en el mismo INSERT.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)