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.

Slides:



Advertisements
Presentaciones similares
SQL Sigla del nombre “Structured Query Language”.
Advertisements

VISTAS (VIEWS) DEFINICIÓN Y OBJETIVO DE LAS VISTAS.
Rocío Contreras Águila Primer Semestre 2010
Base de Datos Orientada a Objetos (OODBMS)
UNIVERSIDAD NACIONAL DE LOJA Carrera de Ingeniería en Sistemas
Maestría en Bioinformática Bases de Datos y Sistemas de Información Otros objetos de Base de Datos Ing. Alfonso Vicente, PMP
Características Objeto Relacionales en Oracle
Diseño Físico Procedimientos Almacenados y Disparadores (Triggers)
PL/SQL Francisco Moreno Universidad Nacional.
MySQL M.C. Pedro Bello López.
SQL Lenguaje de consulta estructurado
1 BD Activas: Motivación zLos SGBD convencionales son “pasivos”. Sólo ejecutan preguntas o transacciones realizadas por los usuarios o por los programas.
Bases de Datos Relacionales
16/04/ Sesión 11 Funciones y procedimientos Ing. Ricardo Inquilla.
PL/SQL Francisco Moreno Universidad Nacional.
Procedimientos Almacenados Funciones Agregadas
Componentes sintácticos
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.
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 11 Creando Vistas.
COMANDOS DML DML son las siglas de Data Manipulation Language y se refiere a los comandos que permiten a un usuario manipular los datos en un repositorio,
TRIGGERS EN ORACLE 8 J. Iriarte S. España
SQL: DDL Francisco Moreno & Carlos Mario Zapata. SQL:DDL DDL: Lenguaje de Definición de Datos Permite crear objetos en la Base de Datos Tipos de Objetos:
SQL (Structured Query Language / Lenguaje de consulta estructurado)‏
Triggers(Disparadores)
Programación en Visual Basic Lección #8: SQL Por Antonio F. Huertas.
Características Objeto-Relacionales en Oracle Francisco Moreno Universidad Nacional.
Consultas SQL (Base de Datos)
Introducción a Bases de Datos en Microsoft Access Programación de Computadoras 2 Sección: P.
LENGUAJE SQL.
Structured Query Language (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.
SQL: DDL Francisco Moreno. SQL: DDL DDL: Lenguaje de Definición de Datos Permite crear objetos en la BD Tipos de objetos: - Tablas: corresponden a las.
CONSTRUCCIÓN DE BASES DE DATOS
LENGUAJE ESTRUCTURADO DE CONSULTAS
SQL Sigla del nombre “Structured Query Language”.
COMANDOS DML DML son las siglas de Data Manipulation Language y se refiere a los comandos que permiten a un usuario manipular los datos en un repositorio,
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; /*==============================================================*/
SQL (Structured Query Language) Lenguaje orientado a bases de datos y sobre todo, al manejo de consultas; el objetivo principal de SQL es la realización.
PUESTO-TRABAJO (Código-Puesto, Empresa, Sueldo, DNI- Contratado) TITULADO (DNI-Titulado, Nombre, Apellidos, Dirección) TITULACION (Iden-Titulación, Nombre,
Comandos de SQL Prog. Orientada a Eventos. Inserción de datos (INSERT) INSERT….VALUES INSERT INTO Tabla1 (Columna1, Columna2…) VALUES (‘ValorAlfa’, ValorNum…);
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
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo SQL en PL/SQL Conceptos básicos.
(Lenguaje de consulta estructurado)
Usuarios y privilegios
SQL es un estándar internacional para trabajar con bases de datos, que consta de dos partes: una parte para manipular datos y una parte para definir tipos.
MULTIPLAN Multiplan es la práctica en grupo que hemos tenido que realizar durante el curso según las especificaciones dadas en la asignatura.
SQL Lenguaje Estructurado de Consultas. Structured Query Lenguaje (SQL). Lenguaje de acceso a bases de datos. Proyecto de Investigación de IBM. La mayoria.
Usuarios. Colocar el servidor en el modo de autenticación Windows/SqlServer. En SQL Server Management Studio, click derecho, Propiedades en la Instancia.
AA Gerardo Morgade Donato AA Isnel Leyva Herbella.
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.
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
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Base de Datos I – Ing. Mary Carlota Bernal J.  Cada instrucción PL/SQL tiene asociado internamente un cursor  Los cursores en PL/SQL pueden ser de dos.
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.
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.
COMANDOS SQL. ¿QUÉ ES SQL? El lenguaje de consulta estructurado es un lenguaje declarativo que permite la creación, acceso e interacción de bases de datos.
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.
TRIGGERS VISTAS Y PROCESOS Ing. Fabiola Nilda Perez Oliver
Transcripción de la presentación:

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

1-2 Triggers INSTEAD OF Una Vista no puede ser modificada por una instrucción DML si esa vista contiene funciones de grupo, claúsulas como GROUP BY, DISTINCT, joins o consultas jerárquicas.Una Vista no puede ser modificada por una instrucción DML si esa vista contiene funciones de grupo, claúsulas como GROUP BY, DISTINCT, joins o consultas jerárquicas. Por ejemplo, si una vista se crea a partir de dos tablas, un insert en esa vista en realidad puede significar que se inserte una fila en una tabla y se actualicen datos en la otra tabla.Por ejemplo, si una vista se crea a partir de dos tablas, un insert en esa vista en realidad puede significar que se inserte una fila en una tabla y se actualicen datos en la otra tabla. Un trigger INSTEAD OF definido sobre esa vista, al momento de dispararse hará las modificaciones directamente sobre las tablas implicadas en la vista.Un trigger INSTEAD OF definido sobre esa vista, al momento de dispararse hará las modificaciones directamente sobre las tablas implicadas en la vista. Una Vista no puede ser modificada por una instrucción DML si esa vista contiene funciones de grupo, claúsulas como GROUP BY, DISTINCT, joins o consultas jerárquicas.Una Vista no puede ser modificada por una instrucción DML si esa vista contiene funciones de grupo, claúsulas como GROUP BY, DISTINCT, joins o consultas jerárquicas. Por ejemplo, si una vista se crea a partir de dos tablas, un insert en esa vista en realidad puede significar que se inserte una fila en una tabla y se actualicen datos en la otra tabla.Por ejemplo, si una vista se crea a partir de dos tablas, un insert en esa vista en realidad puede significar que se inserte una fila en una tabla y se actualicen datos en la otra tabla. Un trigger INSTEAD OF definido sobre esa vista, al momento de dispararse hará las modificaciones directamente sobre las tablas implicadas en la vista.Un trigger INSTEAD OF definido sobre esa vista, al momento de dispararse hará las modificaciones directamente sobre las tablas implicadas en la vista.

1-3 Triggers INSTEAD OF Un trigger INSTEAD OF deberá ser siempre a nivel de fila (FOR EACH ROW) y las opciones BEFORE y AFTER no son válidasUn trigger INSTEAD OF deberá ser siempre a nivel de fila (FOR EACH ROW) y las opciones BEFORE y AFTER no son válidas No se puede definir una lista de columnas cuando se define que el trigger se dispara para el evento UPDATE. Se puede controlar la columna que se está actualizando en el cuerpo del trigger mediante la sentencia IF UPDATING (‘nombre columna’)No se puede definir una lista de columnas cuando se define que el trigger se dispara para el evento UPDATE. Se puede controlar la columna que se está actualizando en el cuerpo del trigger mediante la sentencia IF UPDATING (‘nombre columna’) EJ. BEFORE UPDATE OF nombre -- No está permitido Un trigger INSTEAD OF deberá ser siempre a nivel de fila (FOR EACH ROW) y las opciones BEFORE y AFTER no son válidasUn trigger INSTEAD OF deberá ser siempre a nivel de fila (FOR EACH ROW) y las opciones BEFORE y AFTER no son válidas No se puede definir una lista de columnas cuando se define que el trigger se dispara para el evento UPDATE. Se puede controlar la columna que se está actualizando en el cuerpo del trigger mediante la sentencia IF UPDATING (‘nombre columna’)No se puede definir una lista de columnas cuando se define que el trigger se dispara para el evento UPDATE. Se puede controlar la columna que se está actualizando en el cuerpo del trigger mediante la sentencia IF UPDATING (‘nombre columna’) EJ. BEFORE UPDATE OF nombre -- No está permitido

1-4 Ejemplo

1-5 Triggers INSTEAD OF Ejemplo: Creación de una vista para la información detallada de profesores CREATE OR REPLACE VIEW PROFESOR_DETALLES AS SELECT P.CEDULA, P.NOMBRE, P.SALARIO, P.FACULTAD_ID, F.NOMBRE FNOMBRE FROM PROFESOR P LEFT JOIN FACULTAD F ON P.FACULTAD_ID = F.FACULTAD_ID CREATE OR REPLACE VIEW PROFESOR_DETALLES AS SELECT P.CEDULA, P.NOMBRE, P.SALARIO, P.FACULTAD_ID, F.NOMBRE FNOMBRE FROM PROFESOR P LEFT JOIN FACULTAD F ON P.FACULTAD_ID = F.FACULTAD_ID INSERT INTO PROFESOR_DETALLES“ VALUES (10, 'Sofia', 3000, 2, ‘Derecho') Error SQL: ORA-01776: cannot modify more than one base table through a join view "cannot modify more than one base table through a join view" Error SQL: ORA-01776: cannot modify more than one base table through a join view "cannot modify more than one base table through a join view"

1-6 Triggers INSTEAD OF Ejemplo: Creación de una vista para la información detallada de profesores CREATE OR REPLACE TRIGGER TR_Profesor_Detalles INSTEAD OF INSERT OR UPDATE OR DELETE ON PROFESOR_DETALLES FOR EACH ROW BEGIN IF INSERTING THEN INSERT INTO PROFESOR VALUES (:NEW.CEDULA, :NEW.NOMBRE, :NEW.SALARIO, :NEW.FACULTAD_ID); UPDATE FACULTAD SET TOTALSALARIOS = TOTALSALARIOS + :NEW.SALARIO WHERE FACULTAD_ID = :NEW.FACULTAD_ID; ELSIF DELETING THEN DELETE FROM PROFESOR WHERE CEDULA = :OLD.CEDULA; UPDATE FACULTAD SET TOTALSALARIOS = TOTALSALARIOS - :OLD.SALARIO WHERE FACULTAD_ID = :OLD.FACULTAD_ID; ELSIF UPDATING ('SALARIO') THEN UPDATE PROFESOR SET SALARIO = :NEW.SALARIO WHERE CEDULA = :OLD.CEDULA; UPDATE FACULTAD SET TOTALSALARIOS = TOTALSALARIOS + (:NEW.SALARIO - :OLD.SALARIO) WHERE FACULTAD_ID = :OLD.FACULTAD_ID; END IF; END; CREATE OR REPLACE TRIGGER TR_Profesor_Detalles INSTEAD OF INSERT OR UPDATE OR DELETE ON PROFESOR_DETALLES FOR EACH ROW BEGIN IF INSERTING THEN INSERT INTO PROFESOR VALUES (:NEW.CEDULA, :NEW.NOMBRE, :NEW.SALARIO, :NEW.FACULTAD_ID); UPDATE FACULTAD SET TOTALSALARIOS = TOTALSALARIOS + :NEW.SALARIO WHERE FACULTAD_ID = :NEW.FACULTAD_ID; ELSIF DELETING THEN DELETE FROM PROFESOR WHERE CEDULA = :OLD.CEDULA; UPDATE FACULTAD SET TOTALSALARIOS = TOTALSALARIOS - :OLD.SALARIO WHERE FACULTAD_ID = :OLD.FACULTAD_ID; ELSIF UPDATING ('SALARIO') THEN UPDATE PROFESOR SET SALARIO = :NEW.SALARIO WHERE CEDULA = :OLD.CEDULA; UPDATE FACULTAD SET TOTALSALARIOS = TOTALSALARIOS + (:NEW.SALARIO - :OLD.SALARIO) WHERE FACULTAD_ID = :OLD.FACULTAD_ID; END IF; END;

1-7 Administrando Triggers Habilitar o dehabilitar un Trigger:Habilitar o dehabilitar un Trigger: ALTER TRIGGER nombre_trigger DISABLE | ENABLE Habilitar o dehabilitar todos los trigger de una tabla:Habilitar o dehabilitar todos los trigger de una tabla: ALTER TABLE nombre_tabla DISABLE | ENABLE ALL TRIGGERS Recompilar un Trigger:Recompilar un Trigger: ALTER TRIGGER nombre_trigger COMPILE Eliminar un Trigger:Eliminar un Trigger: DROP TRIGGER nombre_trigger Habilitar o dehabilitar un Trigger:Habilitar o dehabilitar un Trigger: ALTER TRIGGER nombre_trigger DISABLE | ENABLE Habilitar o dehabilitar todos los trigger de una tabla:Habilitar o dehabilitar todos los trigger de una tabla: ALTER TABLE nombre_tabla DISABLE | ENABLE ALL TRIGGERS Recompilar un Trigger:Recompilar un Trigger: ALTER TRIGGER nombre_trigger COMPILE Eliminar un Trigger:Eliminar un Trigger: DROP TRIGGER nombre_trigger

1-8 Ejercicios Crear un trigger que evite que se asocie un estudiante a un programa que pertenezca a una facultad sin profesores. Si no existen profesores para la facultad, se lanza la excepción (-20500, ‘Programa de una facultad sin profesores'). Recuerde que campo Programa_Id del estudiante puede ser nulo.Crear un trigger que evite que se asocie un estudiante a un programa que pertenezca a una facultad sin profesores. Si no existen profesores para la facultad, se lanza la excepción (-20500, ‘Programa de una facultad sin profesores'). Recuerde que campo Programa_Id del estudiante puede ser nulo. Cada vez que se intenta insertar un programa con una Facultad_id que no existe, se dispara un trigger que crea una facultad con el id proporcionado y nombre: ‘FacultadTemporal’.Cada vez que se intenta insertar un programa con una Facultad_id que no existe, se dispara un trigger que crea una facultad con el id proporcionado y nombre: ‘FacultadTemporal’. Crear un trigger que no permita insertar más de 50 estudiantes por programa.Crear un trigger que no permita insertar más de 50 estudiantes por programa. Crear un trigger que evite que se asocie un estudiante a un programa que pertenezca a una facultad sin profesores. Si no existen profesores para la facultad, se lanza la excepción (-20500, ‘Programa de una facultad sin profesores'). Recuerde que campo Programa_Id del estudiante puede ser nulo.Crear un trigger que evite que se asocie un estudiante a un programa que pertenezca a una facultad sin profesores. Si no existen profesores para la facultad, se lanza la excepción (-20500, ‘Programa de una facultad sin profesores'). Recuerde que campo Programa_Id del estudiante puede ser nulo. Cada vez que se intenta insertar un programa con una Facultad_id que no existe, se dispara un trigger que crea una facultad con el id proporcionado y nombre: ‘FacultadTemporal’.Cada vez que se intenta insertar un programa con una Facultad_id que no existe, se dispara un trigger que crea una facultad con el id proporcionado y nombre: ‘FacultadTemporal’. Crear un trigger que no permita insertar más de 50 estudiantes por programa.Crear un trigger que no permita insertar más de 50 estudiantes por programa.

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