Вы находитесь на странице: 1из 14

EJEMPLO DE TRIGGER

Ing. Douglas Ivn Galvis Carrillo


galvisdouglas@gmail.com

ndice

1.- Definiciones de Triggers.

2.- Herramientas Wampserver (PhpMyadmin)

3.- Ejemplo de Triggers

Definicin de Trigger o Disparadores

El soporte para disparadores se incluy a partir de MySQL 5.0.2.


Actualmente, el soporte para disparadores es bsico, 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 clculos
sobre valores involucrados en una actualizacin.

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 tambin establecerse que se active antes o despus de
la sentencia en cuestin. Por ejemplo, se puede tener un disparador
que se active antes de que un registro sea borrado, o despus de que
sea actualizado.

Triggers en Mysql - Bsico

Los triggers tienen dos palabras clave, OLD y NEW que se refieren
a los valores que tienen las columnas antes y despus de la
modificacin. Los INSERT permiten NEW, los DELETE slo 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;

2.- Herramientas Wampserver


(PhpMyadmin)
En esta ocasin 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

En la Barra de tareas entramos en el icono

Y entramos en la consola de Mysql

3.- Ejercicio de Triggers

1. Una vez en la consola de Phpmyadmin, creamos la bases de


Datos prueba

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


Creamos la tabla clientes

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

5.- Creamos Trigger para modificar Modifica_auditoria_clientes

6.- Creamos Trigger para eliminar Elimina_auditoria_clientes

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

CDIGOS

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;

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 modificar


CREATE 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);

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');

Вам также может понравиться