14
EJEMPLO DE TRIGGER Ing. Douglas Iván Galvis Carrillo [email protected]

Ejemplo de Trigger en Mysql

Embed Size (px)

DESCRIPTION

Un disparador es un objeto de base de datos con nombre que se asocia a una tabla, y se activa cuando ocurre un evento en particular para la tabla. Algunos usos para los disparadores es verificar valores a ser insertados o llevar a cabo cálculos sobre valores involucrados en una actualización. Aqui les dejo un ejemplo de Trigger, que puede servir de referencia, como elemento Accounting, de seguridad para algunas tablas de sus bases de Datos

Citation preview

Page 1: Ejemplo de Trigger en Mysql

EJEMPLO DE TRIGGER

Ing. Douglas Iván Galvis [email protected]

Page 2: Ejemplo de Trigger en Mysql

Índice

1.- Definiciones de Triggers.

2.- Herramientas Wampserver (PhpMyadmin)

3.- Ejemplo de Triggers

Page 3: Ejemplo de Trigger en Mysql

El soporte para disparadores se incluyó a partir de MySQL 5.0.2. Actualmente, el soporte para disparadores es básico, por lo tanto hay ciertas limitaciones en lo que puede hacerse con ellos.

Un disparador es un objeto de base de datos con nombre que se asocia a una tabla, y se activa cuando ocurre un evento en particular para la tabla. Algunos usos para los disparadores es verificar valores a ser insertados o llevar a cabo cálculos sobre valores involucrados en una actualización.

Un disparador se asocia con una tabla y se define para que se active al ocurrir una sentencia INSERT, DELETE, o UPDATE sobre dicha tabla. Puede también establecerse que se active antes o después de la sentencia en cuestión. Por ejemplo, se puede tener un disparador que se active antes de que un registro sea borrado, o después de que sea actualizado.

Definición de Trigger o Disparadores

Page 4: Ejemplo de Trigger en Mysql

Triggers en Mysql - Básico

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.

Sintaxis necesaria para crear un trigger

CREATE TRIGGER <nombre> {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON<tablename> FOR EACH ROW BEGIN <sentenciasSQL> END;

Page 5: Ejemplo de Trigger en Mysql

En esta ocasión trabajaremos en la consola de phpmyadmin, para ello debemos tener instalado en nuestro PC la herramienta Wampserver 2.0i

- Una vez instalado, entrados haciendo click en el icono del escritorio

2.- Herramientas Wampserver (PhpMyadmin)

Page 6: Ejemplo de Trigger en Mysql

En la Barra de tareas entramos en el icono

Y entramos en la consola de Mysql

Page 7: Ejemplo de Trigger en Mysql

2. Ponemos en uso la base de Datos mysql> use prueba; Creamos la tabla clientes

3.- Ejercicio de Triggers 1. Una vez en la consola de Phpmyadmin, creamos la bases de

Datos prueba

Page 8: Ejemplo de Trigger en Mysql

3. Ahora crearemos la tabla auditoria_clientes, que será utilizada para registrar todos los cambios, que se hagan en la tabla clientes

4. Comenzamos a crear los tres disparadores o trigger. Trigger para insertar Inserta_auditoria_clientes

Page 9: Ejemplo de Trigger en Mysql

5.- Creamos Trigger para modificar Modifica_auditoria_clientes

6.- Creamos Trigger para eliminar Elimina_auditoria_clientes

Page 10: Ejemplo de Trigger en Mysql

7.- Introducimos datos a la Tabla clientes

8.- este es el resultado en la Tabla clientes

9.- finalmente este es el resultado en la Tabla Auditoria_clientes

Page 11: Ejemplo de Trigger en Mysql

CÓDIGOS

Page 12: Ejemplo de Trigger en Mysql

Tabla: clientes

CREATE TABLE clientes(            id_cliente int not null auto_increment,            nombre varchar(100),            seccion varchar(20), Accion varchar(10) default ‘Insertado’, PRIMARY KEY(id_cliente), KEY(nombre)) ENGINE = InnoDB;

Tabla: Auditoria_clientes

CREATE TABLE auditoria_clientes(   id int not null auto_increment,   nombre_anterior varchar(100),   seccion_anterior varchar(20), nombre_nuevo varchar(100), seccion_nueva varchar(20),   usuario varchar(40),   modificado datetime, proceso varchar(10), Id_Cliente int(4),   primary key(id)) ENGINE = InnoDB;

Page 13: Ejemplo de Trigger en Mysql

Trigger : para insertar

CREATE TRIGGER Inserta_auditoria_clientes AFTER INSERT ON clientes    FOR EACH ROW   INSERT INTO auditoria_clientes(nombre_nuevo, seccion_nueva, usuario, modificado, proceso, Id_Cliente)   VALUES (NEW.nombre, NEW.seccion, CURRENT_USER(), NOW(), NEW.Accion, NEW.id_cliente );

Trigger: para modificarCREATE TRIGGER Modifica_auditoria_clientes BEFORE UPDATE ON clientes    FOR EACH ROW   INSERT INTO auditoria_clientes(nombre_anterior, seccion_anterior, nombre_nuevo, seccion_nueva, usuario, modificado, Id_Cliente)VALUES (OLD.nombre, OLD.seccion, NEW.nombre, NEW.seccion, CURRENT_USER(), NOW(), NEW.id_cliente);

Page 14: Ejemplo de Trigger en Mysql

Trigger : para eliminar

CREATE TRIGGER Elimina_auditoria_clientes AFTER DELETE ON clientes    FOR EACH ROW   INSERT INTO auditoria_clientes(nombre_anterior, seccion_anterior, usuario, modificado, Id_Cliente) VALUES (OLD.nombre, OLD.seccion, CURRENT_USER(), NOW(), OLD.id_cliente);

INSERT INTO clientes (nombre, seccion) VALUES('Miguel','informatica'),('Rosa','comida'),('Maria','ropa'),('Albert','informatica'),('Jordi','comida');