Está en la página 1de 4

INSTITUTO DE EDUCACION TECNICA PROFESIONAL INTEP

Triggers y procedimientos almacenados

Triggers
Un Triggers o disparador es una rutina autnoma Un Trigger nunca se llama directamente. En cambio,
asociada con una tabla o vista que automticamente cuando una aplicacin o usuario intenta insertar,
realiza una accin cuando una fila en la tabla o la vista actualizar, o anular una fila en una tabla, la accin
se inserta (INSERT), se actualiza (UPDATE), o borra definida en el disparador se ejecuta automticamente
(DELETE). (se dispara).

Las ventajas de usar los Triggers son:

La entrada en vigor automtica de Logs automticos de cambios a las tablas.


restricciones de los datos, hace que los Una aplicacin puede guardar un registro
usuarios entren slo valores vlidos. corriente de cambios, creando un trigger que
se dispare siempre que una tabla se
El mantenimiento de la aplicacin se reduce, modifique.
los cambios a un triggers se refleja
automticamente en todas las aplicaciones La notificacin automtica de cambios a la
que tienen que ver con la tabla sin la Base de Datos con alertas de evento en los
necesidad de recompilar o relinquear. triggers.

Procedimientos Almacenados
Un Procedimiento Almacenado es un programa autocontrolado escrito en lenguaje del DBMS, son almacenados
como parte de la Base de Datos y sus metadatos.

Las ventajas de usar los procedimientos almacenados incluyen:

Diseo modular.

Aplicaciones que acceden la misma Base de Datos pueden


compartir los procedimientos almacenados, eliminando el
cdigo doble y reduciendo el tamao de las aplicaciones.

Una vez creado un procedimiento


El fcil mantenimiento.
almacenado, se puede invocar
directamente desde una aplicacin, o
sustituir el nombre de una tabla o Cuando un procedimiento se actualiza, los cambios se
vista, por el nombre de reflejan automticamente en todas las aplicaciones, sin la
procedimiento en clusulas SELECT. necesidad de recompilar y relinkear. Las aplicaciones son
Los procedimientos almacenados compiladas slo una vez para cada cliente.
pueden recibir parmetros de
entrada y retornar valores a la Los procedimientos almacenados son ejecutados por el
aplicacin. servidor, no por el cliente lo que reduce el trfico en la red y
mejora el performance o desempeo, especialmente para el
acceso del cliente remoto.

Estn almacenados en los servidores y asegurados por las


medidas tomadas en la instalacin, lo que impide que los
usuarios normales puedan modificarlos e incluso desconocen
su existencia. Este es un elemento de gran valor en lo que a
seguridad respecta.

Docente: Ing. Ana Milena Bueno Henao. Bases de Datos II


INSTITUTO DE EDUCACION TECNICA PROFESIONAL INTEP
Triggers y procedimientos almacenados

Como se puede apreciar los Sistemas de Bases de Datos ofrecen a desarrolladores, administradores y usuarios
una gama muy completa de herramientas que permiten garantizar la integridad, consistencia, confidencialidad
y en general seguridad de la informacin almacenada y con un elemento muy importante a favor: Las lneas de
cdigo que se requieren por parte del implementador son muy pocas, en ocasiones solo basta con una sencilla
sentencia para obligar al DBMS a controlar y mantener las restricciones necesarias.

Que son los Triggers y como usarlos en MySQL 5.0?

Desde la salida de la versin 5 de MySql se pueden usar triggers en nuestras bases


de datos.

Pero, qu son los triggers?, son objetos relacionados con tablas y almacenados en
la base de datos que se ejecutan o se muestran cuando sucede algn evento sobre
sus tablas asociadas.

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
despus (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 despus de la modificacin. Los INSERT permiten
NEW, los DELETE slo OLD y los UPDATE ambas.

Un ejemplo de trigger seria uno asociado a la sentencia DELETE en una tabla de


clientes, para impedir que se elimine uno que tenga un saldo distinto de cero. Otro
trigger seria guardar los datos que se modifican de un cliente en otra base de
datos que servira de auditoria.

Crearemos la tabla de clientes y le ponemos algunos registros:

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 ('Miguel','informatica'),


('Rosa','comida'), ('Maria','ropa'), ('Albert','informatica'), ('Jordi','comida');

Y una tabla que ser la que guardar los datos de la "auditoria"

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;

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

Docente: Ing. Ana Milena Bueno Henao. Bases de Datos II


INSTITUTO DE EDUCACION TECNICA PROFESIONAL INTEP
Triggers y procedimientos almacenados

fecha.

CREATE TRIGGER trigger_auditoria_clientes AFTER UPDATE ON clientes FOR EACH


ROW INSERT INTO auditoria_clientes(nombre, anterior_seccion, usuario,
modificado) VALUES (OLD.nombre, OLD.seccion, CURRENT_USER(), NOW());

Otro ejemplo de trigger:

Limitaciones de los triggers.

- Solo se pueden aplicar a una tabla especifica, es decir, un trigger no sirve para
dos o ms tablas
- El trigger se crea en la base de datos que de trabajo pero desde un trigger
puedes hacer referencia a otras bases de datos.
- Un Trigger devuelve resultados al programa que lo desencadena de la misma
forma que un Stored Procedure aunque no es lo ms idneo, para impedir que una
instruccin de asignacin devuelva un resultado se puede utilizar la sentencia SET
NOCOUNT al principio del Trigger.
- Las siguientes instrucciones no se pueden utilizar en los triggers:

ALTER DATABASE CREATE DATABASE


DISK INIT DISK RESIZE
DROP DATABASE LOAD DATABASE
LOAD LOG RECONFIGURE
RESTORE DATABASE RESTORE LOG

Ejemplo.

Como ejemplo crearemos un Trigger que avise al webmaster con un mail cuando
un usuario se da de alta en nuestro web, para crear el trigger solo se han de
seguir los pasos arriba indicados, como muestran las imgenes y el cdigo es el
siguiente, haciendo Copy & Paste funciona.

El funcionamiento del trigger es muy sencillo, declaramos dos variables, una para
el mensaje que se enviar en el mail y otra para obtener el ID del registro recin
insertado y luego este ID lo concatenamos al mensaje para envirselo al
webmaster.

Docente: Ing. Ana Milena Bueno Henao. Bases de Datos II


INSTITUTO DE EDUCACION TECNICA PROFESIONAL INTEP
Triggers y procedimientos almacenados

Alter Trigger Trigger_Aviso_al_Webmaster


On dbo.pr_usuarios
For Insert
As

-- Declaramos las variables del mensaje y del ID del nuevo usuario


Declare @Mensaje varchar(200)
Declare @ID numeric

-- Obtenemos el id del usuario recien insertado


Select @ID = (Select IDUsuario From Inserted )
Select @Mensaje = 'Nuevo Usuarios en el web : ' + Convert(varchar(10), @ID)

Exec master.dbo.xp_sendmail
@recipients = 'webmaster@dominio.com',
@subject = 'Nuevo usuario',
@message = @Mensaje

Docente: Ing. Ana Milena Bueno Henao. Bases de Datos II

También podría gustarte