Vous êtes sur la page 1sur 7

TECNOLGICO NACIONAL DE MXICO

INSTITUTO TECNOLGICO DE IGUALA


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)

Creacin de las tablas y la bitacora

Los nueve triggers creados

Archivo de la bitcora

Vous aimerez peut-être aussi