Vous êtes sur la page 1sur 9

PRACTICA: CREACION

DE BITACORA EN MYSQL
Hctor Manuel Lpez Moreno

Administracin de
Base de Datos

Bitcora.
Una bitcora puede registrar mucha informacin acerca de eventos relacionados
con el sistema que la genera los cuales pueden ser:
Fecha y hora.
Host origen.
Usuario.
Actividad realizada.
Creacin de la bitcora.

Primero iniciamos nuestro Sistema Gestor de base de datos.

Despus damos click en crear un nuevo esquema y nos aparecer lo siguiente en


donde ingresamos el nombre del esquema y presionamos aplicar.

Aparecer la siguiente ventana, solamente damos click en aplicar para terminar la


creacin de nuestro esquema.
Despus de la creacin de nuestro esquema, empezaremos a crear las tablas
para el funcionamiento de nuestra bitcora, en este caso usaremos 3 tablas
llamadas: Carrera, Departamento y Maestros, para crearla ponemos el siguiente
cdigo en una consulta SQL
CREATE TABLE IF NOT EXISTS `carrera` (`clave_carrera` int(11) NOT NULL,
`nom_carrera` varchar(20) NOT NULL, `num_depto` int(11) NOT NULL, PRIMARY
KEY (`clave_carrera`), KEY `num_depto` (`num_depto`) ) ENGINE=InnoDB
DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `departamento` ( `num_departamento` int(11)


NOT NULL,`nombre_dept` varchar(20) NOT NULL, `jefe_num_tarjet` int(11) NOT
NULL, PRIMARY KEY (`num_departamento`), KEY `jefe_num_tarjet`
(`jefe_num_tarjet`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `maestros` (`num_tarjeta` int(11) NOT NULL


DEFAULT 0,`nombre` varchar(50) DEFAULT NULL, PRIMARY KEY
(`num_tarjeta`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Todo esto se debe de ver de esta manera:

Una vez ingresado el cdigo damos click en ejecutar


creacin de las tablas.

para que se realice la

Una vez ejecutado el cdigo deber aparecer un mensaje de confirmacin en la


parte de abajo y al actualizar las bases de datos debern aparecer las nuevas
tablas creadas.

Despus de haber creado las tablas, procederemos a crear la bitcora que nos
llevara la informacin de los movimientos, esta se crea con el siguiente cdigo.
CREATE TABLE IF NOT EXISTS `bitacora` (`id` int(11) NOT NULL
AUTO_INCREMENT, `operacion` varchar(10) DEFAULT NULL, `usuario`
varchar(40) DEFAULT NULL, `host` varchar(30) NOT NULL, `modificado` datetime
DEFAULT NULL, `tabla` varchar(40) NOT NULL, PRIMARY KEY (`id`) )
ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Una vez creada nos mostrara el mensaje de confirmacin y nos aparecer ahora
la bitcora creada (no olvide presionar actualizar para ver los cambios)

Ahora para que la bitcora pueda tomar la informacin cuando nosotros


insertamos, cambiamos o eliminamos un dato, debemos crear los disparadores
para cada respectiva tabla, con los siguientes cdigos:
DROP TRIGGER IF EXISTS `bitacora`;
DELIMITER //
CREATE TRIGGER `bitacora` AFTER INSERT ON `carrera`
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(), "CARRERA")
//

DROP TRIGGER IF EXISTS `bit_carr_upd`;//


CREATE TRIGGER `bit_carr_upd` AFTER UPDATE ON `carrera`
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(),
"CARRERA")
//
DROP TRIGGER IF EXISTS `bit_carr_del`;//
CREATE TRIGGER `bit_carr_del` AFTER DELETE ON `carrera`
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(), "CARRERA")
//
DROP TRIGGER IF EXISTS `bit_depto_ins`;//
CREATE TRIGGER `bit_depto_ins` AFTER INSERT ON `departamento`
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(),
"DEPARTAMENTO")
//
DROP TRIGGER IF EXISTS `bit_depto_upd`;//
CREATE TRIGGER `bit_depto_upd` AFTER UPDATE ON `departamento`
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(),
"DEPARTAMENTO")
//

DROP TRIGGER IF EXISTS `bit_depto_del`;//


CREATE TRIGGER `bit_depto_del` AFTER DELETE ON `departamento`

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(),
"DEPARTAMENTO")
//
DROP TRIGGER IF EXISTS `bit_mae_ins`;//
CREATE TRIGGER `bit_mae_ins` AFTER INSERT ON `maestros`
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(), "MAESTROS")
//
DROP TRIGGER IF EXISTS `bit_mae_upd`;//
CREATE TRIGGER `bit_mae_upd` AFTER UPDATE ON `maestros`
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(),
"MAESTROS")
//
DROP TRIGGER IF EXISTS `bit_mae_del`;//
CREATE TRIGGER `bit_mae_del` AFTER DELETE ON `maestros`
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(), "MAESTROS")
//

Al ejecutar el cdigo anterior debe de mandar los mensajes de confirmacin y al


actualizar, ya deben de aparecer los disparadores en cada tabla.

Una vez hecho esto, ya habremos terminado y podremos confirmar que nuestra
bitcora funciona.

Insertamos los valores que sean a cualquier tabla y despus iremos a la bitcora a
confirmar su funcionamiento.

Una vez que confirmemos el funcionamiento de la bitcora habremos terminado.

Vous aimerez peut-être aussi