6 Triggers ORACLE Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.

Slides:



Advertisements
Presentaciones similares
VISTAS (VIEWS) DEFINICIÓN Y OBJETIVO DE LAS VISTAS.
Advertisements

Rocío Contreras Águila Primer Semestre 2010
Base de Datos Orientada a Objetos (OODBMS)
Subprogramas: Procedimientos
Maestría en Bioinformática Bases de Datos y Sistemas de Información SQL: DML Ing. Alfonso Vicente, PMP
Maestría en Bioinformática Bases de Datos y Sistemas de Información Otros objetos de Base de Datos Ing. Alfonso Vicente, PMP
PL/SQL Francisco Moreno Universidad Nacional.
Cursores de Actualización y Referenciales
Diseño Físico Procedimientos Almacenados y Disparadores (Triggers)
4.3. Privilegios de usuarios
Cristian Alaniz - Daniel Hielpos. Agenda - Arquitectura - Tipos de Objetos - Lenguaje de Consulta - Transacciones - Backup y Recuperación - Seguridad.
PL/SQL Francisco Moreno Universidad Nacional.
1 BD Activas: Motivación zLos SGBD convencionales son “pasivos”. Sólo ejecutan preguntas o transacciones realizadas por los usuarios o por los programas.
PL/SQL Francisco Moreno Universidad Nacional. Introducción al PL/SQL ¿Por qué PL/SQL? A pesar de que SQL tiene mecanismos de control condicional (cláusula.
Bases de Datos Relacionales
16/04/ Sesión 11 Funciones y procedimientos Ing. Ricardo Inquilla.
PL/SQL Francisco Moreno Universidad Nacional.
Subconsultas Avanzadas
Procedimientos Almacenados Funciones Agregadas
UNITA - IBARRA TRIGGERS
Lenguaje Estructurado de Consultas
John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
Laboratorio de Bases de datos
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 11 Creando Vistas.
Práctica: Sistema de control de ventas y almacenaje para grandes almacenes 03/12/11.
CAPITULO 10 Manejando Restricciones
TRIGGERS EN ORACLE 8 J. Iriarte S. España
SQL (Structured Query Language / Lenguaje de consulta estructurado)‏
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 19 Extensiones de Oracle 9i para las sentencias DML y DDL.
Triggers(Disparadores)
ESCUELA TECNOLÓGICA INSTITUTO TÉCNICO CENTRAL Ing. Johanna Vargas Esp. Gerencia de proyectos.
"Y todo lo que hagáis, hacedlo de corazón, como para el Señor y no para los hombres" (Colosenses 3:23) Prof. Leonid Tineo Departamento de Computación Universidad.
Programación en Visual Basic Lección #8: SQL Por Antonio F. Huertas.
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 12 Otros Objetos de la Base de Datos.
Características Objeto-Relacionales en Oracle Francisco Moreno Universidad Nacional.
Base de datos Francisco Castro. Creación de una tabla drop table TABLA cascade constraints; /*==============================================================*/
LENGUAJE SQL.
John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
Instrucciones para crear tablas My SQL. A nivel teórico, existen dos lenguajes para el manejo de bases de datos: DDL (Data Definition Language) Lenguaje.
LENGUAJE SQL (LENGUAJE ESTRUCTURADO DE CONSULTA) BASES DE DATOS Ing Sonia Godoy H.
Consultas SQL. SQL SQL es un lenguaje de consulta estructurado (Structured Query Languague). Se utiliza para: Eliminar Modificar Consultar La base de.
Base de datos Francisco Castro. Creación de una tabla drop table TABLA cascade constraints; /*==============================================================*/
PUESTO-TRABAJO (Código-Puesto, Empresa, Sueldo, DNI- Contratado) TITULADO (DNI-Titulado, Nombre, Apellidos, Dirección) TITULACION (Iden-Titulación, Nombre,
Estructuras de Control
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
DISPARADORES Y SISTEMAS DE GESTION DE BASE DE DATOS DE SQL
MULTIPLAN Multiplan es la práctica en grupo que hemos tenido que realizar durante el curso según las especificaciones dadas en la asignatura.
Usuarios. Colocar el servidor en el modo de autenticación Windows/SqlServer. En SQL Server Management Studio, click derecho, Propiedades en la Instancia.
Después de completar esta lección, debe ser capaz de:  Crear registro definidos por el usuario.  Crear un registro con el atributo %ROWTYPE.  Crear.
Lenguaje Estructurado de Consultas
5 Paquetes ORACLE Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Departamento de Lenguajes y Sistemas Informáticos escuela técnica superior de ingeniería informática Diseño de Bases de Datos Tema 4: Integridad.
Apuntes PL-SQL Triggers II. Tipos de datos compuestos Registros PL/SQL: Son similares a un tipo struct en C o a un tipo Registro en otros 3GL. Se componen.
Sentencias DDL y DML PostgreSQL. Base de Datos I – Fundamentos Básicos PostgreSQL PostgreSQL es un servidor de base de datos relacional libre bajo la.
SQL: DDL.
6 Triggers ORACLE - II Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Apuntes PL-SQL Triggers I.
3 Cursores ORACLE Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega.
Administración de Base de Datos Integridad Prof Mercy Ospina Torres Prof Renny A. Hernandez
Mtr. Adrián Monge Monge Educación 2015 Maestría, Mención en Administración de Proyectos ULACITMaestría, Mención en Administración de Proyectos 2012 Licenciatura,
INTEGRACION DE LAS TECNOLOGIAS DE LA INFORMACION Y COMUNICACION Implementación de base de datos (Lenguaje de manipulación de datos) Ing. Linda Masias Morales.
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Querys a bases de datos con MS ACCESS. DEFINAMOS LOS TERMINOS: DML=Lenguaje de manipulación de datos Las sentencias DML permiten generar consultas para.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
Lenguaje MySQL, DDL (Lenguaje de definición de datos) Ing. Linda Masias Morales.
6 Triggers ORACLE - III Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
PL/SQL Francisco Moreno Universidad Nacional.
BASE DE DATOS IUPSM CLASE PRACTICA. PROF. ING. JOSE L GUZMAN H.
UN DISPARADOR O TRIGGER es un procedimiento que se ejecuta cuando se cumple una condición establecida al realizar una operación. Es una rutina autónoma.
BD Activas: Motivación
Transcripción de la presentación:

6 Triggers ORACLE Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega

1-2 Definición Un trigger o disparador es una unidad PL/SQL que es almacenada en la base de datos y ejecutada (disparada) en respuesta a un evento especificado y asociado a:Un trigger o disparador es una unidad PL/SQL que es almacenada en la base de datos y ejecutada (disparada) en respuesta a un evento especificado y asociado a: Una tabla Una vista Un esquema La base de datos Un trigger o disparador es una unidad PL/SQL que es almacenada en la base de datos y ejecutada (disparada) en respuesta a un evento especificado y asociado a:Un trigger o disparador es una unidad PL/SQL que es almacenada en la base de datos y ejecutada (disparada) en respuesta a un evento especificado y asociado a: Una tabla Una vista Un esquema La base de datos

1-3 Tipos de eventos Sentencia DML (DELETE, INSERT, UPDATE)Sentencia DML (DELETE, INSERT, UPDATE) Sentencia DDL (CREATE, ALTER, DROP)Sentencia DDL (CREATE, ALTER, DROP) Operación de Base de datos (SERVERERROR, LOGON, LOGOFF, STARTUP, SHUTDOWN). Llamado Trigger de sistemaOperación de Base de datos (SERVERERROR, LOGON, LOGOFF, STARTUP, SHUTDOWN). Llamado Trigger de sistema Un Trigger INSTEAD OF es un trigger DML que se define sobre una vista.Un Trigger INSTEAD OF es un trigger DML que se define sobre una vista. Sentencia DML (DELETE, INSERT, UPDATE)Sentencia DML (DELETE, INSERT, UPDATE) Sentencia DDL (CREATE, ALTER, DROP)Sentencia DDL (CREATE, ALTER, DROP) Operación de Base de datos (SERVERERROR, LOGON, LOGOFF, STARTUP, SHUTDOWN). Llamado Trigger de sistemaOperación de Base de datos (SERVERERROR, LOGON, LOGOFF, STARTUP, SHUTDOWN). Llamado Trigger de sistema Un Trigger INSTEAD OF es un trigger DML que se define sobre una vista.Un Trigger INSTEAD OF es un trigger DML que se define sobre una vista.

1-4 Estados de un trigger Un trigger puede tener uno de los siguientes estados: Habilitado: Se ejecuta el cuerpo si la sentencia de disparo existe y la condición de disparo se evalua en VERDADERO.Habilitado: Se ejecuta el cuerpo si la sentencia de disparo existe y la condición de disparo se evalua en VERDADERO. Deshabilitado: No se ejecuta el cuerpo del trigger aún si existe la sentencia de disparo y la condición de disparo es VERDADERADeshabilitado: No se ejecuta el cuerpo del trigger aún si existe la sentencia de disparo y la condición de disparo es VERDADERA Por defecto el trigger se crea HABILITADO pero es posible crearlo de en estado DESHABILITADO (DISABLE en la sentencia CREATE TRIGGER).Por defecto el trigger se crea HABILITADO pero es posible crearlo de en estado DESHABILITADO (DISABLE en la sentencia CREATE TRIGGER). Un trigger puede tener uno de los siguientes estados: Habilitado: Se ejecuta el cuerpo si la sentencia de disparo existe y la condición de disparo se evalua en VERDADERO.Habilitado: Se ejecuta el cuerpo si la sentencia de disparo existe y la condición de disparo se evalua en VERDADERO. Deshabilitado: No se ejecuta el cuerpo del trigger aún si existe la sentencia de disparo y la condición de disparo es VERDADERADeshabilitado: No se ejecuta el cuerpo del trigger aún si existe la sentencia de disparo y la condición de disparo es VERDADERA Por defecto el trigger se crea HABILITADO pero es posible crearlo de en estado DESHABILITADO (DISABLE en la sentencia CREATE TRIGGER).Por defecto el trigger se crea HABILITADO pero es posible crearlo de en estado DESHABILITADO (DISABLE en la sentencia CREATE TRIGGER).

1-5 Guía para diseño de triggers No crear triggers para duplicar funcionalidades de la base de datos. (Ej. Constraints en una tabla)No crear triggers para duplicar funcionalidades de la base de datos. (Ej. Constraints en una tabla) Es recomendable usar trigger para controlar la integridad referencial cuando tablas padre e hija están en diferentes nodos de una base de datos distribuidaEs recomendable usar trigger para controlar la integridad referencial cuando tablas padre e hija están en diferentes nodos de una base de datos distribuida Limitar el tamaño de los triggers. No puede exceder 32K. Si contiene demasiada lógica puede crear un procedimiento almacenado e invocarlo desde el trigger.Limitar el tamaño de los triggers. No puede exceder 32K. Si contiene demasiada lógica puede crear un procedimiento almacenado e invocarlo desde el trigger. No crear triggers recursivos.No crear triggers recursivos. Ej. Crear un trigger AFTER UPDATE en una tabla y en el cuerpo del trigger hacer un UPDATE sobre esa tabla No crear triggers para duplicar funcionalidades de la base de datos. (Ej. Constraints en una tabla)No crear triggers para duplicar funcionalidades de la base de datos. (Ej. Constraints en una tabla) Es recomendable usar trigger para controlar la integridad referencial cuando tablas padre e hija están en diferentes nodos de una base de datos distribuidaEs recomendable usar trigger para controlar la integridad referencial cuando tablas padre e hija están en diferentes nodos de una base de datos distribuida Limitar el tamaño de los triggers. No puede exceder 32K. Si contiene demasiada lógica puede crear un procedimiento almacenado e invocarlo desde el trigger.Limitar el tamaño de los triggers. No puede exceder 32K. Si contiene demasiada lógica puede crear un procedimiento almacenado e invocarlo desde el trigger. No crear triggers recursivos.No crear triggers recursivos. Ej. Crear un trigger AFTER UPDATE en una tabla y en el cuerpo del trigger hacer un UPDATE sobre esa tabla

1-6 Privilegios requeridos Para crear un trigger en su esquema: Privilegio CREATE TRIGGERPrivilegio CREATE TRIGGER Además que una de las siguientes condiciones se cumpla: Es el propietario de la tabla especificada en la sentencia Tiene el privilegio ALTER para la tabla especificada en la sentencia Tiene el privilegio ALTER ANY TABLE Para crear un trigger en su esquema: Privilegio CREATE TRIGGERPrivilegio CREATE TRIGGER Además que una de las siguientes condiciones se cumpla: Es el propietario de la tabla especificada en la sentencia Tiene el privilegio ALTER para la tabla especificada en la sentencia Tiene el privilegio ALTER ANY TABLE

1-7 Privilegios requeridos Para crear un trigger en otro esquema o referenciar una tabla in otro esquema: Tener el privilegio CREATE ANY TRIGGERTener el privilegio CREATE ANY TRIGGER Tener el privilegio EXECUTE sobre los subprogramas o paquetes referenciados.Tener el privilegio EXECUTE sobre los subprogramas o paquetes referenciados. Para crear un trigger sobre la base de datos debe tener el privilegio ADMINISTER DATABASE TRIGGER. Para crear un trigger en otro esquema o referenciar una tabla in otro esquema: Tener el privilegio CREATE ANY TRIGGERTener el privilegio CREATE ANY TRIGGER Tener el privilegio EXECUTE sobre los subprogramas o paquetes referenciados.Tener el privilegio EXECUTE sobre los subprogramas o paquetes referenciados. Para crear un trigger sobre la base de datos debe tener el privilegio ADMINISTER DATABASE TRIGGER.

1-8 Creación de Triggers Crear disparadores de tipo fila o sentencia DML mediante: CREATE [OR REPLACE] TRIGGER trigger_name timing event1 [OR event2 OR event3] ON object_name [[REFERENCING OLD AS old | NEW AS new] FOR EACH ROW [WHEN (condition)]] trigger_body

1-9 Tipos de disparadores DML El tipo de disparador determina si el cuerpo se ejecuta para cada fila o sólo una vez para la sentencia disparadora. Un disparador de sentencia: Se ejecuta una vez para el evento disparador Es el tipo por defecto de disparador Se arranca una vez incluso aunque no haya filas afectadas en absoluto El tipo de disparador determina si el cuerpo se ejecuta para cada fila o sólo una vez para la sentencia disparadora. Un disparador de sentencia: Se ejecuta una vez para el evento disparador Es el tipo por defecto de disparador Se arranca una vez incluso aunque no haya filas afectadas en absoluto

1-10 Tipos de disparadores DML Un disparador de fila: Se ejecuta una vez para cada fila afectada por el evento disparador No se ejecuta si el evento disparador no afecta a ninguna fila Se indica mediante la especificación de la cláusula FOR EACH ROW Un disparador de fila: Se ejecuta una vez para cada fila afectada por el evento disparador No se ejecuta si el evento disparador no afecta a ninguna fila Se indica mediante la especificación de la cláusula FOR EACH ROW

1-11 Temporización de los disparadores ¿Cuándo se debe arrancar el disparador? BEFORE: Ejecutar el cuerpo del disparador antes del evento DML disparador en una tabla. AFTER: Ejecutar el cuerpo del disparador después del evento DML disparador en una tabla. INSTEAD OF: Ejecutar el cuerpo del disparador en lugar de la sentencia disparadora. Se utiliza para vistas que no se pueden modificar de otra forma. ¿Cuándo se debe arrancar el disparador? BEFORE: Ejecutar el cuerpo del disparador antes del evento DML disparador en una tabla. AFTER: Ejecutar el cuerpo del disparador después del evento DML disparador en una tabla. INSTEAD OF: Ejecutar el cuerpo del disparador en lugar de la sentencia disparadora. Se utiliza para vistas que no se pueden modificar de otra forma.

1-12 Tipos de evento y cuerpo Un evento del disparador determina qué sentencia DML hace que se ejecute el disparador Los tipos son: INSERT UPDATE [OF column] DELETE El cuerpo del disparador: Determina qué acción se realiza Es un bloque PL/SQL o una llamada a un procedimiento Un evento del disparador determina qué sentencia DML hace que se ejecute el disparador Los tipos son: INSERT UPDATE [OF column] DELETE El cuerpo del disparador: Determina qué acción se realiza Es un bloque PL/SQL o una llamada a un procedimiento

1-13 Creación de un disparador de sentencia Ejemplo.Ejemplo. CREATE OR REPLACE TRIGGER tr_horario_adicion_est BEFORE INSERT ON estudiante BEGIN IF (TO_CHAR(SYSDATE,'DY') IN ('SAT','SUN')) OR (TO_CHAR(SYSDATE,'HH24:MI') NOT BETWEEN '08:00' AND '18:00') THEN RAISE_APPLICATION_ERROR(-20500, ‘Solo puede agregar estudiantes en horas laborales'); END IF; END; CREATE OR REPLACE TRIGGER tr_horario_adicion_est BEFORE INSERT ON estudiante BEGIN IF (TO_CHAR(SYSDATE,'DY') IN ('SAT','SUN')) OR (TO_CHAR(SYSDATE,'HH24:MI') NOT BETWEEN '08:00' AND '18:00') THEN RAISE_APPLICATION_ERROR(-20500, ‘Solo puede agregar estudiantes en horas laborales'); END IF; END;

1-14 Creación de un disparador de fila Ejemplo.Ejemplo. CREATE OR REPLACE TRIGGER restriccion_salario BEFORE INSERT OR UPDATE OF salario ON profesor FOR EACH ROW BEGIN IF :NEW.salario < THEN RAISE_APPLICATION_ERROR (-20202, ‘Los profesores no pueden ganar menos de $1’500,000.'); END IF; END; CREATE OR REPLACE TRIGGER restriccion_salario BEFORE INSERT OR UPDATE OF salario ON profesor FOR EACH ROW BEGIN IF :NEW.salario < THEN RAISE_APPLICATION_ERROR (-20202, ‘Los profesores no pueden ganar menos de $1’500,000.'); END IF; END;

1-15 Bibliografía Oracle® Database PL/SQL Language Reference -11g Release 1 (11.1) Oracle® Database PL/SQL Language Reference -11g Release 1 (11.1)