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 comments:
Publicar un comentario