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

problemas con triggers

Estas en el tema de problemas con triggers en el foro de Mysql en Foros del Web. Buenas noches, veran tengo estos triggers para una bitacora @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original ----------------------------------------------------------------------------------------------------- CREATE TRIGGER `bit _ insertar` AFTER INSERT ON `usuario` ...
  #1 (permalink)  
Antiguo 11/11/2013, 22:55
 
Fecha de Ingreso: octubre-2013
Mensajes: 9
Antigüedad: 10 años, 6 meses
Puntos: 0
problemas con triggers

Buenas noches, veran tengo estos triggers para una bitacora
Código MySQL:
Ver original
  1. -----------------------------------------------------------------------------------------------------
  2. CREATE TRIGGER `bit_insertar` AFTER INSERT ON `usuario`
  3. FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),'@')+1)), SUBSTRING(USER(),1,(instr(user(),'@')-1)), 'INSERTAR', NOW(), 'usuario')
  4. ;
  5.  
  6.  
  7. CREATE TRIGGER `bit_actualizar` AFTER UPDATE ON `ususario`
  8. FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),'@')+1)), SUBSTRING(USER(),1,(instr(user(),'@')-1)), 'ACTUALIZAR', NOW(), 'usuario')
  9. ;
  10.  
  11. CREATE TRIGGER `bit_eliminar` AFTER DELETE ON `ususario`
  12. FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),'@')+1)), SUBSTRING(USER(),1,(instr(user(),'@')-1)), 'ELIMINAR', NOW(), 'usuario')
  13. ;
  14.  
  15. -----------------------------------------------------------------------------------------------------
el primero registra inserciones, el segundo actualizaciones y el tercero eliminaciones, en una tabla llamada bitacora, todos son funcionales, y si se fijan tienen la misma estructura, solo que se ejecutan en un determinado evento.

Ahora lo que nesecito es que, cuando se ejecute el trigger que registra las inserciones ademas de las operaciones que hace (capturar usuario, hora y fecha, etc.) tambie me capture el (ID) del nuevo ususario,

si se ejecuta el triger de las eliminaciones me capture el ID del usuario eliminado

y por ultimoa a mi entender el mas dificil es que cuando se ejecute una actualizacion capture el dato anterior y el nuevo

de antemano gracias por cualquier respuesta

Última edición por gnzsoloyo; 12/11/2013 a las 02:51
  #2 (permalink)  
Antiguo 12/11/2013, 07:47
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: problemas con triggers

Lo planteado se resuelve con OLD y NEW el manual lo explica muy bien y con ejemplos.

Cita:
Las palabras clave OLD y NEW permiten acceder a columnas en los registros afectados por un disparador. (OLD y NEW no son sensibles a mayúsculas). En un disparador para INSERT, solamente puede utilizarse NEW.nom_col; ya que no hay una versión anterior del registro. En un disparador para DELETE sólo puede emplearse OLD.nom_col, porque no hay un nuevo registro. En un disparador para UPDATE se puede emplear OLD.nom_col para referirse a las columnas de un registro antes de que sea actualizado, y NEW.nom_col para referirse a las columnas del registro luego de actualizarlo.

Una columna precedida por OLD es de sólo lectura. Es posible hacer referencia a ella pero no modificarla. Una columna precedida por NEW puede ser referenciada si se tiene el privilegio SELECT sobre ella. En un disparador BEFORE, también es posible cambiar su valor con SET NEW.nombre_col = valor si se tiene el privilegio de UPDATE sobre ella. Esto significa que un disparador puede usarse para modificar los valores antes que se inserten en un nuevo registro o se empleen para actualizar uno existente.

En un disparador BEFORE, el valor de NEW para una columna AUTO_INCREMENT es 0, no el número secuencial que se generará en forma automática cuando el registro sea realmente insertado.

OLD y NEW son extensiones de MySQL para los disparadores.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #3 (permalink)  
Antiguo 13/11/2013, 10:54
 
Fecha de Ingreso: octubre-2013
Mensajes: 9
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: problemas con triggers

Cita:
Iniciado por NSD Ver Mensaje
Lo planteado se resuelve con OLD y NEW [URL="http://dev.mysql.com/doc/refman/5.0/es/using-triggers.html"]el manual[/URL] lo explica muy bien y con ejemplos.
exelente me sirvio te lo agradezco

Etiquetas: tabla
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 07:25.