Está en la página 1de 3

Administración de Bases de Datos

LUIS ALBERTO JULIO CASSIANI

1. Construya un trigger que permita verificar la inserción o actualización de un registro sobre la tabla
empleado, de manera que su salario sea superior a 5000 dólares, el trigger PL/SQL actualizará
dicho salario al valor de 5000 dólares independientemente del salario que nosotros hayamos
insertado o introducido al modificar el registro.

CREATE OR REPLACE TRIGGER limitar_salario


BEFORE INSERT OR UPDATE ON emp
FOR EACH ROW
BEGIN
IF :NEW.sal > 5000 THEN
:NEW.sal := 5000;
END IF;
END;

2. Utilice la expresión: raise_application_error(-20001,'mensajes'); para lanzar mensajes desde triggers,


con construya un trigger valide que al actualizar un nuevo salario de la tabla emp, no exceda de los
3000 dólares.

CREATE OR REPLACE TRIGGER limitar_salario


BEFORE INSERT OR UPDATE ON emp
FOR EACH ROW
BEGIN
IF :NEW.sal > 5000 THEN
:NEW.sal := 5000;
END IF;
END;
Administración de Bases de Datos
LUIS ALBERTO JULIO CASSIANI

3. Construya un trigger que permita antes de insertar sobre una copia de la tabla emp, obtener el
promedio de los salarios de la tabla, si el nuevo salario excede a ese promedio enviar un mensaje
utilizando raise_application_error:

CREATE OR REPLACE TRIGGER verificar_salario_promedio


BEFORE INSERT ON emp
FOR EACH ROW
DECLARE
promedio_salario NUMBER;
BEGIN
SELECT AVG(sal) INTO promedio_salario FROM emp;

IF :NEW.sal > promedio_salario THEN


raise_application_error(-20001, 'El salario excede el promedio');
END IF;
END;

4. Consulte sobre la cláusula when para la construcción de los triggers y proporcione un ejemplo:

CREATE OR REPLACE TRIGGER ejemplo_when_trigger


BEFORE INSERT ON emp
FOR EACH ROW
WHEN (NEW.sal > 5000)
BEGIN
-- Lógica a ejecutar si se cumple la condición
DBMS_OUTPUT.PUT_LINE('El salario es mayor a 5000');
END;
Administración de Bases de Datos
LUIS ALBERTO JULIO CASSIANI

Para deshabilitar los triggers: ALTER TRIGGER nombre_trigger DISABLE;


Para habilitarlos nuevamente: ALTER TRIGGER nombre_trigger ENABLE;

También podría gustarte