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

Estructura de llamado para Triggers MYSQL

Estas en el tema de Estructura de llamado para Triggers MYSQL en el foro de Bases de Datos General en Foros del Web. La funcionalidad de los disparadores sigue siendo necesaria para el control de los movimientos de forma eficiente dentro de muchos sistema, estoy trabajando con disparadores ...
  #1 (permalink)  
Antiguo 27/07/2017, 12:14
 
Fecha de Ingreso: marzo-2016
Ubicación: venezuela
Mensajes: 12
Antigüedad: 8 años, 1 mes
Puntos: 0
Información Estructura de llamado para Triggers MYSQL

La funcionalidad de los disparadores sigue siendo necesaria para el control de los movimientos de forma eficiente dentro de muchos sistema, estoy trabajando con disparadores en un proyecto que estoy realizando, a ver si me puedes ayudar, a ver les cuento los disparadores ya me están funcionando bien, insertar actualizar y eliminar pero tengo un detalle al momento de registrar el proceso en la bitacora me registra es el usuario que tenia ese registro mas no el usuario que esta realizando la acción.

esto dos mis disparadores

Disparadores
Código MySQL:
Ver original
  1. --
  2. DELIMITER $$
  3. CREATE TRIGGER `Elimino_persona` AFTER DELETE ON `personas` FOR EACH ROW BEGIN
  4. DELETE FROM recuperador WHERE cedula = OLD.cedula;--> acciones que van relacionadas con la persona para recuperar el acceso al sistema ante el olvido de usuario y clave
  5. DELETE FROM directorio WHERE cedula = OLD.cedula;-->
  6. acciones que van relacionadas con la persona como es su direccion
  7.  
  8. disparadore como tal en la opción de eliminar
  9. insert into bitacora (usuario,sesion,operacion,tabla,fecha,registro) values (CURRENT_USER,OLD.usuario,"Elimino","Funcionario",NOW(),OLD.cedula);
  10. $$
  11. DELIMITER ;
  12. DELIMITER $$
  13. CREATE TRIGGER `actualizar_persona` BEFORE UPDATE ON `personas` FOR EACH ROW insert into bitacora (usuario,sesion,operacion,tabla,fecha,registro) values (CURRENT_USER,NEW.usuario,"Actualizo","Funcionario",NOW(),NEW.cedula)
  14. $$
  15. DELIMITER ;
  16. DELIMITER $$
  17. CREATE TRIGGER `insertar_persona` BEFORE INSERT ON `personas` FOR EACH ROW insert into bitacora (usuario,sesion,operacion,tabla,fecha,registro) values (CURRENT_USER,NEW.usuario,"Inserto","Funcionario",NOW(),NEW.cedula)
  18. $$
  19. DELIMITER ;

y en la bitacora me lo almacena de la siguiente manera


usuario sesion operacion tabla registro fecha
root@localh 15756146 Elimino Funcionario 15756146 2017-07-27 11:52:08
root@localh 15756146 Inserto Funcionario 15756146 2017-07-27 12:22:22

como lo tengo en un servidor local me muestra como usuario root@localh que pertenece al usuario de MYSQL pero el detalle esta en que quisiera que me muestra el usuario que realizo la acción desde php en esta caso fue el administrador, donde dice sesion me deberia aparecer Admin por ejemplo, pero en cambio me parace 15756146 que en este caso es el usuario pero de la persona que elimine y luego volvi a registrar.

si me pueden orientar que estoy haciendo mal.

Última edición por gnzsoloyo; 27/07/2017 a las 20:24
  #2 (permalink)  
Antiguo 27/07/2017, 20:28
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, 5 meses
Puntos: 2658
Respuesta: Estructura de llamado para Triggers MYSQL

CURRENT_USER devuelve el user de la conexion a la base de datos, no el usuario de la aplicación.
Si usas siempre el mismo usuario para generar las conexiones y ejecutar las queries, siempre registrará ese dato.
Para que un usuario de aplicación, que no es USER de MySQL, se registre en la bitácora, deberas obtener ese dato de alguna forma, o (y esto es lo recomendado) registrar ese usuario en los campos de auditoria de cada tabla, si los tienes, o pasarlo como parametro de las acciones DML que ejecutes, como para que el trigger pueda obtenerlo.
¿Se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: estructura, llamado, mysql, php, 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 05:49.