Administración de Base de Datos.: Tema 01 Teoría de Los
Administración de Base de Datos.: Tema 01 Teoría de Los
Administración de Base de Datos.: Tema 01 Teoría de Los
Guía 13
Tecnologías
ADMINISTRACIÓN
DE BASE DE
DATOS.
Tema Nº13:
TEMA 01 PL/SQL IX.
Programación Teoría de los
TEMA de
Indicador Nº13:
logro Nº13:
Elabora disparadores avanzados en programación PL/SQL.
1
Escuela de Administración de Base de Datos
Guía 13
Tecnologías
Ejemplo 1:
2
Escuela de Administración de Base de Datos
Guía 13
Tecnologías
Crear un trigger sobre la tabla EMPLEADO para que no se permita que un empleado sea jefe de
más de cinco empleados.
Para probar el disparador se debe de insertar registros sobre la tabla Empleado, tal como se observa
en la siguiente imagen:
El error se genera en el registro de CESAR CAMPOS, dado que este empleado tiene como jefe a la
misma persona por DNI, que los anteriores empleados.
Ejemplo 2:
3
Escuela de Administración de Base de Datos
Guía 13
Tecnologías
Crear un trigger para impedir que se aumente el salario de un empleado en más de un 20%
Es necesario comparar los valores :old.salario y :new.salario cada vez que se modifica el
atributo salario BEFORE UPDATE.
Probando el disparador:
Antes de actualizar:
Actualizando registros.
Aquí se genera errores debido a que algunos sueldos no se les puede aumentar más del 20%.
Ejemplo 3:
4
Escuela de Administración de Base de Datos
Guía 13
Tecnologías
Crear un trigger que inserte una fila en la tabla Empleados_Baja cuando se borre una fila en la tabla
empleado.
Disparador:
Antes de Eliminar, escogemos un registro, en este caso ‘ELENA CHAVEZ’ cuyo Dni es: 45878742
Proceda a Eliminar:
5
Escuela de Administración de Base de Datos
Guía 13
Tecnologías
OTROS EJEMPLOS:
Ejemplo 4:
6
Escuela de Administración de Base de Datos
Guía 13
Tecnologías
Crear un trigger para impedir que, al insertar un Empleado, el empleado y su jefe puedan pertenecer
a departamentos distintos.
Ejercicio 5:
Crear un trigger para impedir que, al insertar un Empleado, la suma de los salarios de los empleados
pertenecientes al departamento del empleado insertado supere los 10.000.
Ejemplo 6:
Se tiene el siguiente modelo relacional:
7
Escuela de Administración de Base de Datos
Guía 13
Tecnologías
Este modelo relacional consiste en registrar a clientes (CLIENTE) con sus respectivos prestamos
(CREDITO y REGISTRAR_CUOTAS), implementar un disparador el cual sea capaz de
almacenar las cuotas mensuales (REGISTRAR_CUOTAS) de un determinado crédito.
Las condiciones son las siguientes:
Registrar solo 3 Clientes
Registre solo un crédito, con el primer cliente, con los siguientes elementos
o Monto de 5000 soles.
o Se pagará en 5 cuotas mensuales
o Se aplicará a cada cuota el 5% adicional
SOLUCIÓN:
PASO 1:
Insertamos registros en la tabla cliente:
INSERT INTO CLIENTE VALUES ('C0001','PEREZ GONZALES
JUAN','05/05/2019');
INSERT INTO CLIENTE VALUES ('C0002','CESPEDES LOPEZ ELIZABETH',
'10/05/2019');
PASO 2:
8
Escuela de Administración de Base de Datos
Guía 13
Tecnologías
Creamos el disparador (REGISTRO) para la tabla CREDITO, que permitirá registrar las
mensualidades en la tabla REGISTRAR_CUOTA, después (AFTER) de generar el crédito, según el
número de cuotas establecidas.
CREATE OR REPLACE TRIGGER REGISTRO
AFTER INSERT ON CREDITO
FOR EACH ROW
DECLARE
CONTEO INT:=0;
NUEVA_FECHA DATE;
COSTO_CUOTA NUMBER (10, 2):=0;
BEGIN
COSTO_CUOTA:=(:NEW.MONTO / :NEW.C_CUOTAS) +
((:NEW.MONTO / :NEW.C_CUOTAS) * 0.05);
FOR CONTEO IN 1..:NEW.C_CUOTAS LOOP
NUEVA_FECHA:= add_months(:NEW.F_REGISTRO,CONTEO);
INSERT INTO REGISTRAR_CUOTAS VALUES (CONTEO, :NEW.IDCREDITO,
CONTEO, COSTO_CUOTA, NUEVA_FECHA, NULL, NULL, NULL);
END LOOP;
END;
PASO 3:
Insertaremos un solo registro en la tabla CREDITO, este contendrá los datos necesarios para
generar las mensualidades en la tabla REGISTRAR_CUOTAS.
PASO 4:
Comprobamos las inserciones en las tablas: CREDITO y REGISTRAR_CUOTAS con simples
consultas.
Aquí se han registrado con ayuda del disparador, las mensualidades del primer cliente.
SELECT * FROM REGISTRAR_CUOTAS;
Subtema 13.2:
9
Escuela de Administración de Base de Datos
Guía 13
Tecnologías
10
Escuela de Administración de Base de Datos
Guía 13
Tecnologías
La codificación PL/SQL de Oracle es tan amplia, que ofrece a los estudiantes una alta gama de
alternativas para la resolución de problemas en disparadores, combinados con procedimientos y
funciones, no difíciles de entender, con la prioridad de manejar los datos con suma responsabilidad
por el programador Oracle.
Adicional mente, estos disparadores ofrecen a los administradores en base de datos, el mejor
mantenimiento de tablas y datos que la conforman.
ACTIVIDAD VIRTUAL
Revisar y analizar el material presentado del Tema 13.
11