0 évaluation0% ont trouvé ce document utile (0 vote)
473 vues7 pages
Este documento describe cómo crear bitácoras en MySQL. Explica la creación de una tabla de bitácora personalizada y nueve triggers para registrar acciones de inserción, eliminación y modificación en tres tablas (carrera, departamento y maestros) de una base de datos de ejemplo llamada proyecto.
Este documento describe cómo crear bitácoras en MySQL. Explica la creación de una tabla de bitácora personalizada y nueve triggers para registrar acciones de inserción, eliminación y modificación en tres tablas (carrera, departamento y maestros) de una base de datos de ejemplo llamada proyecto.
Este documento describe cómo crear bitácoras en MySQL. Explica la creación de una tabla de bitácora personalizada y nueve triggers para registrar acciones de inserción, eliminación y modificación en tres tablas (carrera, departamento y maestros) de una base de datos de ejemplo llamada proyecto.
CARRERA: INGENIERIA EN SISTEMAS COMPUTACIONALES ASIGNATURA: ADMINISTRACIN DE BASES DE DATOS UNIDAD 4 PRACTICA 4.1 CREACIN DE BITCORAS
NOMBRE DEL DOCENTE: ENRIQUE MENA
SALGADO NOMBRE DEL ALUMNO: EDER ALEXIS PEREZ PIEDRA NMERO DE CONTROL: 13670035 PRIMERA OPORTUNIDAD GRUPO: A TURNO: MATUTINO
a) Activacin de la bitcora general de MariaDB
Creacion de la base de datos Bitcora activada
b) Creacin de una bitcora personalizada,
Ejemplo de una creacion de una bitacora en MySQL
Enseguida plantear un ejemplo de una bitcora desarrollada para la siguiente base de datos de MySQL, llamada proyecto, que tiene las tablas carrera, departamento y maestros. CREATE DATABASE proyecto; USE proyecto 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; La estructura de la tabla bitcora sera la siguiente: 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 ; La bitcora debe registrar todos los movimientos (insertar, eliminar y modificar) que se realicen en las tablas de la base de datos. Para lograr lo anterior es necesario crear un trigger para que se ejecute despus de la operacin de insertar, otro para despus de eliminar y el ltimo para despus de modificar para cada una de las 3 tablas de la base de datos. Los nueve triggers necesarios para que funcione la bitcora son los siguientes: DROP TRIGGER IF EXISTS `bit_carr_ins`; 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)