Este documento describe cómo crear y manipular bases de datos y tablas en MySQL. Primero, se crea una base de datos llamada "Practica" y dentro de ella dos tablas, "clientes" y "auditoria_clientes". Luego, se usan transacciones con "START TRANSACTION", "SAVEPOINT", "COMMIT" y "ROLLBACK" para insertar y revertir registros, y se crean triggers para registrar cambios en la tabla de auditoría.
1. Nombre del profesor: Ing. José Omar Díaz Aguilar
Nombre del Alumno: Jesús Guadalupe Trujillo Ramírez
Indri Patricia Gabriel Escalante
Cuatrimestre: 8°
Grupo: “D”
Materia: “Base de datos”
Tecnología de la Información y la Comunicación, Área
Sistemas Informáticos
2. Primeramente se creara una Base de Datos con el nombre de Practica, usamos la
Base de Datos y dentro de ella crearemos dos tablas con el nombre de clientes y
auditoria_clientes y cada tabla contendrá sus respectivos datos.
CREATE DATABASE Practica;
USE Practica;
CREATE TABLE clientes(id_cliente int not null auto_increment,
nombre varchar(100),seccion varchar(20),
Accion varchar(10) default 'Insertado',
PRIMARY KEY(id_cliente),
KEY(nombre)) ENGINE = 'InnoDB';
CREATE TABLE auditoria_clientes(id int not null auto_increment,
nombre_anterior varchar(100),seccion_anterior varchar(20),
nombre_nuevo varchar(100),seccion_nueva varchar(20),
usuario varchar(40),modificado datetime,
proceso varchar(10),Id_Cliente int(4),primary key(id)) ENGINE = 'InnoDB';
Para comprobar si quedo la Base de Datos asemos una actualización en Heidi y
vemos la Base de Datos creada y las tablas creadas.
COMMINT
Para poder hacer una tracción, primero se tiene que inicializar con el comando
START TRANSACTION, con el comando SAVEPOINT marcamos un punto de la
transacción actual con el nombre de ‘PEDRO’, luego creamos nuestro triggers con
el nombre de Insertar_auditoria_cliente, y después insertamos en los valores
correspondientes, como se muestra en el siguiente código.
Nombre de la
Base de Datos.
Nombre de la tabla
auditoria_clientes.
Nombre de la
tabla clientes.
3. START TRANSACTION;
SAVEPOINT PEDRO;
CREATE TRIGGER Inserta_auditoria_clientes
AFTER INSERT ON clientes
FOR EACH ROW
INSERT INTO auditoria_clientes(nombre_nuevo, seccion_nueva, usuario,
modificado, proceso, Id_Cliente)
VALUES (NEW.nombre, NEW.seccion, CURRENT_USER(), NOW(), NEW.Accion,
NEW.id_cliente );
INSERT INTO clientes (nombre, seccion)
VALUES('Miguel','informatica'),('Rosa','comida'),('Maria','ropa'),('Alber
t','informatica'),('Jordi','comida'),('PEDRO','LICENCIA');
COMMIT;
Después concluimos con el COMMIT que es la Finalización de la transacción
actual haciendo permanentes todos los cambios pendientes.
Como vemos en la siguiente imagen se creó el triggers con el nombre de
Insertar_auditoria_clientes y también se insertaron los valores correspondientes en
cada tabla y como vemos en las dos tablas se inserto el nombre de nuestro
SAVEPOINT que es PEDRO.
Tabla clientes:
Nombre de
nuestro triggers
Nombre de nuestro
SAVEPOINT
5. ROLLBACK
Para el ROLLBACK que es la finalización de una tracción actual descartando
todos los cambios pendientes, primero iniciamos la tracción con el START
TRANSACTION, luego con el SAVEPOINT que marca un punto de la transacción
actual con el nombre de ‘PEDRO’ utilizaremos el mismo trigger pero le
cambiaremos el nombre con el nombre de rollback1, insertamos valores en la
tabla clientes donde clientes tiene nombre & sección, y los valores serán
‘PEDRO2’ y ‘LICENCIA’, luego ponemos ROLLBACK TO y el nombre que le
habíamos puesto a nuestro SAVEPOINT que sería ‘PEDRO’, ponemos nuestro
traiggers, en el siguiente código se muestra como quedo el método de
ROLLBACK.
START TRANSACTION;
SAVEPOINT PEDRO;
INSERT INTO clientes (nombre, seccion)
VALUES('PEDRO2','LICENCIA');
ROLLBACK TO pedro;
CREATE TRIGGER Rollback1
AFTER INSERT ON clientes
FOR EACH ROW
INSERT INTO auditoria_clientes(nombre_nuevo, seccion_nueva, usuario,
modificado, proceso, Id_Cliente)
VALUES (NEW.nombre, NEW.seccion, CURRENT_USER(), NOW(), NEW.Accion,
NEW.id_cliente );
En el código anterior la utilidad del ROLLBACK es que no se podrá insertar los
valores de ‘PEDRO2’ y ‘LICENCIA’, porque, como ya se había mencionado antes
el rollback finaliza la tracción, entonces en este caso no podrá pasar al triggers.
En la siguiente imagen observamos que tenemos a PEDRO, ahora utilizaremos el
ROLLBACK.
6. Como se observa se creó el triggers con el nombre de rollback1
Luego vamos en la tabla clientes y observamos que no se puedo insertar los datos
de ‘PEDRO2’ y ‘LICENCIA’ y quedo igual.
Nombre de nuestro
triggers