Successfully reported this slideshow.

Triggers

10,162 views

Published on

Descripción y uso de los Triggers en una Base de Datos

Published in: Technology
  • Be the first to comment

Triggers

  1. 1. TRIGGERS Activadores Disparadores
  2. 2. Implementación de integridad definida por el usuario y/o reglas de negocio Restricciones y reglas de integridad Activadores (Triggers) Para definir reglas sobre eventos sobre una tabla. Se activan automáticamente al ocurrir el evento (INSERT, UPDATE o DELETE) sobre la tabla y ejecuta acciones definidas en caso de cumplirse las condiciones especificadas. Procedimientos Almacenados Para definir reglas (lógica) sobre eventos en general. Se ejecutan desde aplicaciones o al ser invocados por un usuario de la base de datos.
  3. 3. Activadores ( triggers ) Integridad definida por el usuario Se activan automáticamente al ocurrir el evento (INSERT, UPDATE o DELETE) sobre la tabla y ejecuta acciones definidas en caso de cumplirse las condiciones especificadas. Usos : Validación de datos : mayor flexibilidad que restricción CHECK. Condicionar la actualización de la base de datos : activándose antes (BEFORE) de actualizar la BD, se evita innecesarios bloqueo de recursos y posibles recuperaciones al estado anterior de una transaccion (ROLLBACK). Integridad entre diversas tabla s : mayor flexibilidad que restricciones/reglas de integridad referencial pues no es necesario la existencia de llaves foráneas (recuérdese que las relaciones en un esquema relacional se definen a traves de los valores de los datos).
  4. 4. Activadores (triggers) DB2 Integridad definida por el usuario >>-CREATE TRIGGER--activador---+-NO CASCADE BEFORE-+-------> +-AFTER-------------+ >--+-INSERT------------------------------+-ON--tabla----> +-DELETE------------------------------+ +-UPDATE--+-------------------------+-+ | +-----,-----------+ | | V | | +-OF----------columna--+--+ >--+---------------------------------------------------------+-> | +--------------------------------------+ | | V +-AS-+ | | +-REFERENCING------+-OLD-+----+--nombre-correlación---++--+ | +-AS-+ | +-NEW-+----+--nombre-correlación----+ | +-AS-+ | +-OLD_TABLE-+----+--identificador---+ | +-AS-+ | +-NEW_TABLE-+----+--identificador---+ >--+-FOR EACH ROW--------+--MODE DB2SQL---| acción-activada |-->< | | +-FOR EACH STATEMENT--+
  5. 5. acción-activada |--+---------------------------------+--------------------------> +-WHEN--(--condición-búsqueda--)--+ >--+-sentencia-SQL-activada-----------------------------+------| | +----------------------------+ | | V | | +-BEGIN ATOMIC----sentencia-SQL-activada--;--+--END--+ Activadores (triggers) Integridad definida por el usuario
  6. 6. Activadores (triggers) Integridad definida por el usuario Integridad entre la tabla PERSONA y la tabla CARGO : Restricción definida: No debe permitirse la actualización del dato bonificación (en PERSONA) si el valor que se pretende asignarle excede el porcentaje máximo sobre su sueldo definido para el cargo ocupado (en CARGO) por la persona.
  7. 7. Activadores (triggers) Integridad definida por el usuario
  8. 8. Activadores (triggers) Integridad definida por el usuario
  9. 9. Activadores (triggers) Integridad definida por el usuario
  10. 10. ¿Que son los Triggers y como usarlos en MySQL 5.0? Desde la salida de la versión 5 de MySql se pueden usar triggers en las bases de datos creadas con este manejador. Los eventos pueden ser las sentencias INSERT, DELETE, UPDATE que modifican los datos de una tabla. Los triggeres se pueden ejecutar antes (BEFORE) y/o después (AFTER) de que sean modificados los datos. Los triggers 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. Un ejemplo de trigger seria uno asociado a la sentencia UPDATE en una tabla de clientes, para guardar los datos que se modifican de un cliente en otra base de datos que serviría de auditoria.
  11. 11. ..... y finalmente un trigger que se disparará cada vez que alguien modifique un dato de la tabla clientes y lo guardará en una tabla junto al nombre del usuario y la fecha. 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() );   Crearemos la tabla de clientes CREATE TABLE clientes(             id int not null auto_increment,             nombre varchar(100),             seccion varchar(10),             PRIMARY KEY(id),             KEY(nombre) ) ENGINE = InnoDB; Y una tabla que será la que guardará los datos de la &quot;auditoria&quot; 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;

×