No es un bug, es una característica no documentada

lunes, 13 de abril de 2015

Bases de datos. SQL programado (XI). Ejercicios (VI)

10:51 Posted by Inazio No comments
Hoja de ejercicios seis del tema 6/7.
Para estos ejercicios usaremos el script primeros_pasos.sql (lo puedes descargar aquí)

Ejercicio 25. Realizar dos triggers que completen la funcionalidad del trigger1 del apartado 9.3 de los materiales,  mantener sincronizada la tabla alumnos_replica,  pero para las operaciones de modificación (trigger ejercicio25a) y borrado (trigger ejercicio25b).

Antes de realizar el ejercicio necesitarás tener creada la tabla:

CREATE TABLE alumnos_replica
         (id        INT PRIMARY KEY,
          alumno VARCHAR(30))
     ENGINE=innodb;

-- Creo tabla alumnos
create table alumnos
(id int primary key, alumno varchar(30))
engine=innodb;

-- Creo la tabla donde realizaré el volcado de datos
create table alumnos_replica
(id int primary key, alumno varchar(30))
engine=innodb;

delimiter $$
-- Trigger para la inserción de filas (apartado 9.3)
create trigger veinticincoA
     after insert on alumnos
     for each row
begin
     insert into alumnos_replica values(new.id, new.alumno);
end $$

-- trigger para la eliminación de filas
create trigger veinticincoB
     after delete on alumnos
     for each row
begin
     delete from alumnos_replica where id = old.id;
end $$

-- trigger para la actualización de filas
create trigger veinticincoC
     after update on alumnos
     for each row
begin
     update alumnos_replica
     set id = new.id, alumno = new.alumno
     where id = old.id;
end $$
delimiter ;

Ejercicio 26. Realizar tres triggers  ejercicio26a, ejercicio26b, y ejercicio26c que realicen una auditoria similar a la que realiza el trigger2 del apartado 9.3 de los materiales,  pero para la tabla centros:

El trigger  ejercicio26a  auditará las operaciones de inserción.
El trigger  ejercicio26b  auditará las operaciones de modificación.
El  trigger ejercicio26c  auditará las operaciones de borrado
Antes de realizar el ejercicio necesitarás tener creada la tabla:

CREATE TABLE AUDITA (mensaje VARCHAR(200));

-- Creo tabla para la auditoría

create table audita (mensaje varchar(100));

delimiter $$

-- Trigger de inserción
create trigger ejercicio26a
     after insert on centros
     for each row
begin
     insert into audita
     values (concat('Inserción realizada por ', user(),
                        ' en fecha ', now(),
                        '. Valores insertados: ', new.numce, ', ', new.nomce, ' y ', new.seas));
end $$

-- Triger de actualización
create trigger ejercicio26b
     after insert on centros
     for each row
begin
     insert into audita
     values (concat('Modificación realizada por ', user(),
                        ' en fecha ', now(),
                        '. Valores antiguos: ', old.numce, ', ', old.nomce, ' y ', old.seas,
                        '. Valores nuevos: ', new.numce, ', ', new.nomce, ' y ', new.seas));
end $$

-- Trigger de borrado
create trigger ejercicio26c
     after insert on centros
     for each row
begin
     insert into audita
     values (concat('Borrado realizado por ', user(),
                        ' en fecha ', now(),
                        '. Valores borrados: ', old.numce, ', ', old.nomce, ' y ', old.seas));
end $$


delimiter ;

0 comentarios:

Publicar un comentario