Ver Mensaje Individual
  #8 (permalink)  
Antiguo 29/04/2016, 07: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, 5 meses
Puntos: 2658
Respuesta: problemas con triggers

Porque, como en TODOS los demás DBMS, los campos de un registro que se inserta o se actualiza en un trigger NO se puede invcar solamente por su nombre. Debes usar las peudovariables NEW y OLD, como referencia del registro que estás modificando (cada uno de os que el trigger procesa).
Me parece que necesitas leer de nuevo el manual de referencia, porque este tema está claramente explicado en él.

La cosa es así: Cada vez que insertas un registro, y en la tabla hay un trigger para ese evento, el registro queda en un estado de proceso y asociado a una pseudovariable denominada NEW. En el caso de los UPDATE y DELETE, el registro existente es el OLD.
Entonces, mientras estás dentro del trigger obligatoriamente debes referirte a él con ese nombre, de lo contrario se generará un error de ejecución porque MySQL intenta encontrar una columna o tabla con el nombre de campo que quieres, y no existe.

Vamos de vuelta entonces:

Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. CREATE TRIGGER k2 BEFORE INSERT ON k
  4.     IF NEW.District IS NULL OR NEW.District= '' THEN
  5.         SET NEW.District='Unknown';
  6.     END IF;
  7. END$$
  8.  
  9.  DELIMITER ;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)