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

[SOLUCIONADO] Error 1363 al crear trigger de auditoría

Estas en el tema de Error 1363 al crear trigger de auditoría en el foro de Mysql en Foros del Web. Hola a todos, primero gracias por vuestra ayuda, estoy intentando crear un trigger que haga esto: Crea un TRIGGER llamado CAMBIO_EMPLEADO que cuando se vaya ...
  #1 (permalink)  
Antiguo 23/02/2013, 04:40
 
Fecha de Ingreso: febrero-2013
Ubicación: Granada
Mensajes: 13
Antigüedad: 11 años, 2 meses
Puntos: 0
Error 1363 al crear trigger de auditoría

Hola a todos, primero gracias por vuestra ayuda, estoy intentando crear un trigger que haga esto:

Crea un TRIGGER llamado CAMBIO_EMPLEADO que cuando se vaya a hacer un cambio en la tabla CLIENTES registre los datos en CLIENTES_MODIF. Para registrar el usuario existe una función, CURRENTUSER() que te devuelve el usuario actual. Y para el momento actual puedes utilizar alguna función ya conocida.

y tengo hecho esto:
Código MySQL:
Ver original
  1. -- Trigger DDL Statemets
  2. DELIMITER $$
  3. USE `empresa` $$
  4. definer=`root`@`localhost`
  5. TRIGGER `empresa`.`CAMBIO_EMPLEADO`
  6. after INSERT ON `empresa`.`clientes`
  7. if new.id_empleado <> old.id_empleado THEN
  8.     insert into clientes_modif (nombre,apellidos,id_antiguo_empleado,usuario,cambiado)
  9.     values (nombre, apellidos,old.id_empleado,CURRENT_USER(),NOW());
  10. end$$
Pero me tira el error 1363: "there is no OLD row in on INSERT trigger"

Como puedo solucionar esto si lo que intento hacer es que cuando vaya a cambiar el id_empleado, se guarde el antiguo id_empleado en la tabla clientes_modif.

un saludo y gracias por vuestro tiempo y molestia

EDITO: alguno conoce algun manual de triggers de mysql?

Última edición por gnzsoloyo; 23/02/2013 a las 07:37 Razón: Codigo SQL mal etiquetado
  #2 (permalink)  
Antiguo 23/02/2013, 07:20
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 12 años, 10 meses
Puntos: 42
Respuesta: Error 1363 al crear trigger de auditoría

Hola ReGuE,

En disparadores (triggers) INSERT está disponible solamente: NEW.

Te dejo la sección del manual de MySQL: 18.3.1. Trigger Syntax

Espero te sea útil la información.
  #3 (permalink)  
Antiguo 23/02/2013, 09:25
 
Fecha de Ingreso: febrero-2013
Ubicación: Granada
Mensajes: 13
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Error 1363 al crear trigger de auditoría

Cita:
Iniciado por wchiquito Ver Mensaje
Hola ReGuE,

En disparadores (triggers) INSERT está disponible solamente: NEW.

Te dejo la sección del manual de MySQL: [URL="https://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html"]18.3.1. Trigger Syntax[/URL]

Espero te sea útil la información.
Gracias por la respuesta pero como puedo hacer el ejercicio sino? no me queda claro del todo como poder hacerlo, espero que me deis una idea o algo, mientras tanto voy a intentarlo con el manual de mysql aunque ese que me has pasado ya lo habia mirado

un saludo
  #4 (permalink)  
Antiguo 23/02/2013, 09: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: 16 años, 4 meses
Puntos: 2658
Respuesta: Error 1363 al crear trigger de auditoría

Creo que no has entendido bien el tema de las pseudovariables NEW y OLD.

NEW es el registro entrante, con los valores enviados en la sentencia (o nulos y defaults si no se envían todos los valores). Es decir, son los nuevos valores.

OLD es el registro que ya existe y se desea modificar, con los valores que actualmente tiene en la tabla.

Pero en un INSERT no existe un registro previo, por lo que no existe la variable OLD. OLD sólo es funcional en UPDATE o DELETE, ninguno de los cuales es lo que debes usar.

En definitiva, ya tienes lo que necesitas para hacer el ejercicio, lo que debes recordar es que estás insertando y no actualizando, por lo que en lugar de usar OLD sólo puedes usar NEW.

¿Se entiende la diferencia? ¿Queda suficientemente claro?

Haz lo que tienes que hacer, pero usa lo que corresponde.
__________________
¿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 23/02/2013, 17:29
 
Fecha de Ingreso: febrero-2013
Ubicación: Granada
Mensajes: 13
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Error 1363 al crear trigger de auditoría

Vale, soy un inutil, acabo de caer... muchas gracias gnz! tema solucionado

Etiquetas: insert, tabla, trigger
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 06:50.