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.

Slides:



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

VISTAS (VIEWS) DEFINICIÓN Y OBJETIVO DE LAS VISTAS.
Delete en tablas: titulacion. Puedo eliminar cualquier fila de una tabla? Restriccion de integridad: Restrict/Cascade.
Fernando Velasco
Maestría en Bioinformática Bases de Datos y Sistemas de Información Otros objetos de Base de Datos Ing. Alfonso Vicente, PMP
Diseño Físico Procedimientos Almacenados y Disparadores (Triggers)
PL/SQL Francisco Moreno Universidad Nacional.
…Tablas DDL.
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
PL/SQL Francisco Moreno Universidad Nacional.
Procedimientos Almacenados Funciones Agregadas
Integridad Referencial 1. Integridad referencial 2.
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.
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)
Características Objeto-Relacionales en Oracle Francisco Moreno Universidad Nacional.
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.
CONSTRUCCIÓN DE BASES DE DATOS
SQL Sigla del nombre “Structured Query Language”.
Base de Datos I. SQL es el lenguaje estándar para trabaja con base de datos relacionales. MySQL, el sistema de gestión de bases de datos SQL Open Source.
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
(Lenguaje de consulta estructurado)
SQL Lenguaje Estructurado de Consultas. Structured Query Lenguaje (SQL). Lenguaje de acceso a bases de datos. Proyecto de Investigación de IBM. La mayoria.
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.
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.
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.
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.
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.
Crear una tabla (create table - sp_tables - sp_columns - drop table) Para ver las tablas existentes creadas por los usuarios en una base de datos usamos.
Administración de Sistemas Gestores de Bases de Datos.
COMANDOS BÁSICOS MYSQL BASES DE DATOS 2 UNIVERSIDAD DE LA AMAZONIA.
PL/SQL Francisco Moreno Universidad Nacional.
Características Objeto Relacionales en Oracle
Lenguaje de manipulación de datos
MYSQL SQL: Lenguaje de consulta estructurado. Es un lenguaje de programación para trabajar con BD relacionadas, entre las cuales tenemos MYSQL, ORACLE,
SEGURIDAD SQL Usuarios, privilegios y perfiles.
Tipos de datos en MYSQL YEAR: Año. “YYYY” o “YY”
BASE DE DATOS IUPSM CLASE PRACTICA. PROF. ING. JOSE L GUZMAN H.
SQL Prof. Martín Contreras.
Stored Procedures Firebird.
SQL Prof. Martín Contreras.
5. SQL Procedural.
SQL Lenguaje de Consulta Estructurado
Lenguaje de Manipulación de Datos
UN EJEMPLO DE LECTURA CONSISTENTE EN INNODB
Base de Datos - II . Unidad 1 -SQL.
Structure Query Languaje
BD Activas: Motivación
Unidad V :- Integridad de datos.
Modificación de datos. Introducción Uso de transacciones Inserción de datos Eliminación de datos Actualización de datos Consideraciones acerca del rendimiento.
Normalmente emparejamos tablas que están relacionadas entre sí y una de las columnas de emparejamiento es clave principal, pues en este caso, Cuando una.
TRIGGERS VISTAS Y PROCESOS Ing. Fabiola Nilda Perez Oliver
Construcción de elementos de Software 4 MSc. Oscar Mauricio Salazar Ospina MSc Juan Camilo Jaramillo Alzate 15/05/2019Programación distribuida y paralela1.
El SQL es el lenguaje estándar ANSI/ISO de definición, manipulación y control de bases de datos relacionales. La sigla que se conoce como SQL corresponde.
Lenguaje de definición de datos. Un lenguaje de base de datos o lenguaje de definición de datos es un lenguaje proporcionado por el sistema de gestión.
Transcripción de la presentación:

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 asociada con una tabla o vista que automáticamente realiza una acción cuando una fila en la tabla o la vista se inserta (INSERT), se actualiza (UPDATE), o borra (DELETE). Un Disparador nunca se llama directamente, en cambio, cuando una aplicación o usuario intenta insertar, actualizar, o anular una fila en una tabla, la acción definida en el disparador se ejecuta automáticamente (se dispara ).

Son usados para mejorar la administración de la Base de datos, sin necesidad de contar con que el usuario ejecute la sentencia de SQL. Además, pueden generar valores de columnas, previene errores de datos, sincroniza tablas, modifica valores de una vista, etc. Permite implementar programas basados en paradigma lógico (sistemas expertos, deducción).

La entrada en vigor automática de restricciones de los datos, hace que los usuarios entren sólo valores válidos. El mantenimiento de la aplicación se reduce, los cambios a un disparador se refleja automáticamente en todas las aplicaciones que tienen que ver con la tabla sin la necesidad de recompilar.

Los Disparadores tienen dos palabras clave, OLD y NEW que se refieren a los valores que tienen las columnas antes y después de la modificación. Los INSERT permiten NEW, los DELETE sólo OLD y los UPDATE ambas.

CREATE [OR REPLACE] TRIGGER nombre [temporalidad del evento] [granularidad del evento] [WHEN condición] BEGIN cuerpo del trigger END nombre;

CREATE [OR REPLACE] TRIGGER nombre Crea o reemplaza un disparador con el nombre especificado. [temporalidad del evento] Puede tomar dos valores: BEFORE ó AFTER que indicará si el cuerpo del disparador debe ejecutarse antes o después del evento que causa la activación del disparador. Ambos valores pueden aplicarse tanto para disparadores a nivel de fila como a nivel de orden.

La opción BEFORE/AFTER debe acompañarse de la operación que causa la activación del disparador. Estas pueden ser operaciones de inserción (INSERT) Y/O borrado (DELETE) y/o modificación (UPDATE) respecto a una tabla o respecto a una columna de una tabla. Cuando se quiere especificar más operación, estas se pueden unir utilizando los operadores OR y AND.

[ granularidad del evento] [WHEN condición] Permite distinguir si el disparador es a nivel de fila o a nivel de orden. Un disparador se define a nivel de fila cuando el cuerpo del disparador se debe aplicar fila a fila de la tabla afectada y se define a nivel de orden cuando se debe aplicar a toda la tabla a la vez. Si queremos definir el disparador a nivel de fila, la granularidad deberá especificarse con la cláusula FOR EACH ROW a la que habrá que acompañar de la condición que debe cumplir la fila para aplicar el cuerpo del disparador.

Esta condición se indica en la orden SQL mediante la cláusula WHEN condición. Cuando no exista definición del granularidad del evento, significará que el disparador está definido a nivel de orden.

Dentro del cuerpo de un disparador podemos incluir sentencias de borrado (DELETE), inserción (INSERT) o modificación (UPDATE) pero también se puede poner cualquier otra sentencia SQL (SELECT..)

Eliminación de un disparador DROP TRIGGER nombre; Habilitación/deshabilitación de un disparador ALTER TRIGGER nombre [ENABLE|DISABLE] Habilitación/deshabilitación de todos los disparadores de una tabla: ALTER TABLE nombretabla [ENABLE|DISABLE] ALL TRIGGERS; Ver todos los disparadores definidos por un usuario SELECT TRIGGER_NAME FROM USER_TRIGGERS Ver el cuerpo de un disparador: SELECT TRIGGER_BODY FROM USER_TRIGGERS WHERE TRIGGER_NAME = ‘nombre_disparador’; Ver la descripción de un disparador: SELECT DESCRIPTION FROM USER_TRIGGERS WHERE TRIGGER_NAME = ‘nombre_disparador

Si se quiere hacer mención en la condición WHEN al valor de la fila a borrar, se debe hacer referencia mediante las variables NEW y OLD. Por ejemplo el disparador estaría correctamente definido de la siguiente manera: CREATE TRIGGER nivel_fila_con_condición AFTER DELETE OF salario ON empleado FOR EACH ROW WHEN OLD.salario >60000 BEGIN

CREATE TABLE test1(a1 INT); CREATE TABLE test2(a2 INT); CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY); CREATE TABLE test4( a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b4 INT DEFAULT 0 ); DELIMITER | CREATE TRIGGER testref BEFORE INSERT ON test1 FOR EACH ROW BEGIN INSERT INTO test2 SET a2 = NEW.a1; DELETE FROM test3 WHERE a3 = NEW.a1; UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1; END | DELIMITER ; INSERT INTO test3 (a3) VALUES (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL); INSERT INTO test4 (a4) VALUES (0), (0), (0), (0), (0), (0), (0), (0), (0), (0); INSERT INTO test1 VALUES (1), (3), (1), (7), (1), (8), (4), (4);

CREATE TABLE clientes (id int not null auto_increment, nombre varchar(100), seccion varchar(10), PRIMARY KEY(id), KEY(nombre)) ENGINE = InnoDB; INSERT INTO clientes (nombre, seccion) VALUES ('Ivan','administración'), ('Susana','jefe de prensa'), ('Max','asistente operativo'), ('Javier','supervisor'); CREATE TABLE auditoria_clientes (id int not null auto_increment, nombre varchar(100), anterior_seccion varchar(10), usuario varchar(40), modificado datetime, primary key(id)) ENGINE = InnoDB; CREATE TRIGGER trigger_auditoria_clientes AFTER UPDATE ON clientes FOR EACH ROW INSERT INTO auditoria_clientes(name, anterior_seccion, usuario, modificado ) VALUES (OLD.nombre, OLD.seccion, CURRENT_USER(), NOW() );