ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Guia Triggers


Enviado por   •  11 de Junio de 2012  •  2.593 Palabras (11 Páginas)  •  609 Visitas

Página 1 de 11

GUIA DE TRIGGERS (Disparadores) EN MYSQL

Conceptos, historia y contexto

A partir de MySQL 5.0.2 se incorporó el soporte básico para disparadores

(triggers). Un disparador es un objeto con nombre dentro de una base de datos

el cual se asocia con una tabla y se activa cuando ocurre en ésta un evento en

particular.

Definición de un trigger

Eliminación de un trigger

Drop trigger nombre_disp;

nombre_disp: será el nombre del trigger.

El disparador queda asociado a la tabla nombre_tabla. Esta debe ser una tabla

permanente, no puede ser una tabla TEMPORARY ni una vista.

momento_disp es el momento en que el disparador entra en acción. Puede ser

BEFORE (antes) o AFTER (despues), para indicar que el disparador se ejecute

antes o después que la sentencia que lo activa.

evento_disp indica la clase de sentencia que activa al disparador. Puede ser

INSERT, UPDATE, o DELETE. Por ejemplo, un disparador BEFORE para

sentencias INSERT podría utilizarse para validar los valores a insertar.

No puede haber dos disparadores en una misma tabla que correspondan al

mismo momento y sentencia. Por ejemplo, no se pueden tener dos

disparadores BEFORE UPDATE. Pero sí es posible tener los disparadores

BEFORE UPDATE y BEFORE INSERT o BEFORE UPDATE y AFTER

UPDATE.

sentencia_disp es la sentencia que se ejecuta cuando se activa el disparador

(lo que quiero que sea automático, es un algoritmo). Si se desean ejecutar

múltiples sentencias, deben colocarse entre BEGIN ... END, el constructor de

sentencias compuestas. Esto además posibilita emplear las mismas sentencias

permitidas en rutinas(procedimientos y funciones) almacenadas.

En estas sentencias se puede tener acceso a los datos dependiendo del

evento_disp y del momento_disp:

momento_disp evento_disp Toma de datos observaciones

BEFORE INSERT New.nombredelcampo:

campo nuevo

Ejemplo dentro del trigger

yo puedo hacer referencia

al nuevo código así

new.codigo

AFTER INSERT New.nombredelcampo: No se puede

campo nuevo trabajar sobre

la misma tabla

BEFORE UPDATE New.nombredelcampo:

campo nuevo

old.nombredelcampo:

campo viejo.

Ejemplo en el trigger se

podría preguntar

If(old.costo>new.costo)

Se refiere a que compare el

que está actualmente y el

Nuevo por el que va a ser

remplazado

AFTER UPDATE New.nombredelcampo: No se puede

campo nuevo trabajar sobre

old.nombredelcampo: la misma tabla

campo viejo.

BEFORE DELETE old.nombredelcampo:

campo viejo

AFTER DELETE old.nombredelcampo:

campo viejo

Ejemplo1 de un triggers: La “idea” es crear un trigger que antes de insertar un producto

calcule el valor de venta.

Supongamos la siguiente situación: En una empresa vende productos y se gana un porcentaje

fijo por cada producto.

Cree la siguiente tabla:

PRODUCTOS

...

Descargar como (para miembros actualizados)  txt (6.9 Kb)  
Leer 10 páginas más »
Disponible sólo en Clubensayos.com