Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. Introducción
2. Creación de
triggers
3. Expresiones
Triggers en Oracle
4. Activación
5. Documentación
6. Ejercicios
Introducción
IISSI 1
Introducción al Modelado Conceptual 29/11/2012
Ejercicios
Ejercicios
1. Introducción
2. Creación de
triggers
• Forzar reglas de integridad que son difíciles de
3. Expresiones
4. Activación
definir mediante constraints.
5. Documentación
6. Ejercicios
• Realizar cambios en la base de datos de forma
transparente al usuario.
IISSI 2
Introducción al Modelado Conceptual 29/11/2012
Introducción
Creación de Triggers
1. Introducción
2. Creación de
triggers
3. Expresiones
La definición de un trigger tiene tres partes:
4. Activación – Comando:
5. Documentación
6. Ejercicios • Se especifica el comando DML de SQL que dispara el
Trigger (Delete, Insert o Update), y la tabla asociada.
• Se puede especificar cuándo se dispara el Trigger:
– BEFORE, antes de ejecutar el comando,
– AFTER, después de ejecutar el comando.
– Restricción:
• Se define la condición que tiene que verificar cada fila
de la tabla para que se ejecute la acción del trigger
– Acción:
• Se define mediante comandos y sentencias SQL y
© Diseño de Amador Durán Toro, 2011
IISSI 3
Introducción al Modelado Conceptual 29/11/2012
Sintaxis de triggers
1. Introducción
2. Creación de CREATE [OR REPLACE] TRIGGER <nombre_trigger>
triggers
3. Expresiones
4. Activación
{BEFORE|AFTER}
5. Documentación
6. Ejercicios {DELETE|INSERT|UPDATE [OF <col1>, ..., <colN>]
[OR
{DELETE|INSERT|UPDATE [OF <col1>, .., <colN>]]}
ON table <nombre_tabla>
[FOR EACH ROW [WHEN (<condicion>)]]
Expresiones
• Para referirse al valor nuevo y al antiguo de una columna
Escuela Técnica Superior
de Ingeniería Informática de una fila de la tabla, se utilizan los prefijos :OLD y :NEW
Departamento de Lenguajes
y Sistemas Informáticos
1. Introducción
2. Creación de
• Cuando estamos haciendo una modificación (UPDATE) de
triggers
una fila podemos referirnos al valor antes de ser
3. Expresiones
4. Activación modificado (:OLD) y al valor después de la modificación
5. Documentación
(:NEW).
6. Ejercicios
IISSI 4
Introducción al Modelado Conceptual 29/11/2012
Activación de triggers
Documentación de triggers
IISSI 5
Introducción al Modelado Conceptual 29/11/2012
Ejercicios
1. Introducción
2. Creación de
triggers
3. Expresiones
4. Activación
CREATE TABLE empleados
5. Documentación
6. Ejercicios
(dni char(4) PRIMARY KEY,
nomemp varchar2(15),
mgr char(4),
salario integer DEFAULT 1000,
usuario varchar2(15),
fecha date );
Ejercicios
necesarias para
comprobar que
funcional el trigger
IISSI 6
Introducción al Modelado Conceptual 29/11/2012
Ejercicios
Ejercicios
1. Introducción
CREATE OR REPLACE TRIGGER aumentoSalario
2. Creación de
triggers BEFORE UPDATE OF salario ON empleados
3. Expresiones FOR EACH ROW
4. Activación BEGIN
5. Documentación IF :NEW.salario > :OLD.salario*1.20
6. Ejercicios THEN raise_application_error
(-20600,:new.Salario||'no se puede aumentar el
salario más de un 20%');
END IF;
END;
IISSI 7
Introducción al Modelado Conceptual 29/11/2012
Ejercicios
• Ejercicio 3.
Escuela Técnica Superior
de Ingeniería Informática
Departamento de Lenguajes • Crear una tabla empleados_baja con la siguiente
y Sistemas Informáticos
estructura: CREATE TABLE empleados_baja
1. Introducción
(dni char(4) PRIMARY KEY,
2. Creación de
triggers nomemp varchar2(15),
3. Expresiones mng char(4),
4. Activación salario integer,
5. Documentación usuario varchar2(15),
6. Ejercicios
fecha date );
Ejercicios
END;
© Diseño de Amador Durán Toro, 2011
IISSI 8
Introducción al Modelado Conceptual 29/11/2012
Ejercicios
• Ejercicio 4.
Escuela Técnica Superior
de Ingeniería Informática
Departamento de Lenguajes
– Modificar la tabla empleados añadiendo el campo
y Sistemas Informáticos
departamento (integer) (ALTER TABLE …).
1. Introducción
2. Creación de • Crear un trigger para impedir que el salario total por
triggers
3. Expresiones departamento (suma de los salarios de los
4. Activación
5. Documentación
empleados por departamento) sea superior a 10.000.
6. Ejercicios
• Ayuda:
– Será necesario distinguir si se trata de una
modificación o de una inserción.
– Cuando se trate de una inserción (IF INSERTING...) se
comprobará que el salario del empleado a insertar
(:NEW.salario) más el salario total del departamento
al que pertenece dicho empleado no es superior a
10.0000.
– Cuando se trate de una modificación (IF
Ejercicios
IISSI 9
Introducción al Modelado Conceptual 29/11/2012
Ejercicios
Ejercicio 6.
Escuela Técnica Superior
de Ingeniería Informática • Visualizar los trigger definidos sobre una tabla consultando la vista
Departamento de Lenguajes
y Sistemas Informáticos ALL_TRIGGERS.
1. Introducción – DESC ALL_TRIGGERS
2. Creación de – SELECT trigger_name, status FROM ALL_TRIGGERS WHERE table_name =
triggers
3. Expresiones
'empleados';
4. Activación
5. Documentación
6. Ejercicios
• Desactivar (DISABLE) y activar (ENABLE) los trigger definidos sobre una
tabla:
– ALTER TABLE empleados DISABLE ALL TRIGGERS;
Ejercicios
END;
© Diseño de Amador Durán Toro, 2011
IISSI 10