Ver Mensaje Individual
  #4 (permalink)  
Antiguo 02/07/2008, 08:40
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: trigger insert

¿Y cómo hace MySQL para saber cuál valor de seccion en qué registro debe tomarlo?

El problema es que en realidad no estás tomando ningún dato. Para que eso funcionara, deberías hacer algo así:
Código:
CREATE TRIGGER insert_clientes before insert ON clientes
FOR EACH ROW
INSERT INTO auditoria_clientes(nombre, anterior_seccion, usuario, modificado )
SELECT nombre,seccion, CURRENT_USER(), NOW() FROM clientes
WHERE nombre = NEW.nombre;
Ten en cuenta que en los triggers del evento INSERT los únicos valores de entrada que dispones son los que pusiste en la sentencia que lo disparó, no puedes usar otros valores a menos que dentro del cuerpo del trigger los obtengas de algún modo. Este es el caso. No estás posicionado en un registro, eso no existe. O usas la pseudotabla NEW, o debes obtener el dato de alguna fuente.
En este ejemplo estoy SUPONIENDO que el INSERT que disparó el trigger incluye un campo nombre de donde tomar el valor, de lo contrario el código podría quedar:
Código:
CREATE TRIGGER insert_clientes before insert ON clientes
FOR EACH ROW
INSERT INTO auditoria_clientes(nombre, anterior_seccion, usuario, modificado )
VALUES(NEW.nombre, NEW.seccion, CURRENT_USER(), NOW());
__________________
¿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; 02/07/2008 a las 09:52