Está en la página 1de 9

Unidad III: Procedimientos, Funciones y

Triggers
Disparadores (Triggers)
Módulo: Bases de Datos con MySQL Workbench

Contenido
1. Triggers (Disparadores).................................................................................... 3
a. Definición de un trigger............................................................................................................3
b. Eliminación de un trigger.........................................................................................................6

2 Dirección de Tecnología Educativa - campus.inatec.edu.ni


Unidad III: Procedimientos, Funciones y Triggers

1. Triggers (Disparadores)

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.

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.

a. Definición de un trigger

Para crear un disparador o trigger debes utilizar el comando CREATE TRIGGER, a como se describe
a continuación.

Sintaxis:

Donde:

‰‰ Nombre_disp: Es el nombre del disparador o trigger que se creará.


‰‰ Momento_disp: Es el momento en que el disparador entra en acción. Puede ser BEFORE
(antes) o AFTER (después), 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.
‰‰ Nombre_tabla: Es el nombre de la tabla a la que se le asociará el disparador.
‰‰ Sentencia_disp: Es la sentencia que se ejecuta cuando se activa el disparador. Si se desean
ejecutar múltiples sentencias, deben colocarse entre BEGIN … END.

Observación:

»» No puede haber dos disparadores en una misma tabla que correspondan al mismo momento
y evento.
»» La tabla a la cual se asocie un disparador debe ser permanente, no puede ser una tabla
temporal ni una vista.

Dirección de Tecnología Educativa - campus.inatec.edu.ni 3


Módulo: Bases de Datos con MySQL Workbench

Ejemplo #1:

En el ejemplo de la figura #15 se ha definido un disparador (trigger) de nombre TOTAL_EXISTENCIAS,


el cual se activa después (AFTER) de que ocurre una inserción o se ejecuta un INSERT en la
tabla PRODUCTO. Observa que en el cuerpo del disparador la única sentencia de disparo es una
consulta de selección, la cual se ejecuta en el momento de disparo AFTER, asignando la suma total
de las existencias de los productos a la variable @SUM a través de la sentencia SET.

Al igual que en los procedimientos almacenados y funciones, antes de crear un trigger debes
cambiar el carácter de escape predeterminado de MySQL por otro (por ejemplo: //), y luego volver
nuevamente al punto y coma (;).

Al ejecutar los comandos SQL de la figura #16, el disparador TOTAL_EXISTENCIAS asociado a la


tabla PRODUCTO se activará y dejará un resultado en la variable @SUM; por lo que si se comprueba
el valor de esta variable aparecería a como se observa en la figura #17.

4 Dirección de Tecnología Educativa - campus.inatec.edu.ni


Unidad III: Procedimientos, Funciones y Triggers

Ejemplo #2:

Observa el ejemplo de la figura #18, el evento que activará al disparador es un INSERT y el momento
de activación será antes (BEFORE) de que se inserte un registro sobre la tabla ACCOUNT. La
sentencia que ejecutará el disparador al activarse es un SET, el cual acumula en la variable @SUM
los valores de la columna amount de la tabla ACCOUNT por cada nuevo registro a insertarse.

Para utilizar el disparador INS_SUM, se debe establecer el valor de la variable acumulador a cero,
ejecutar una sentencia INSERT, y ver qué valor presenta luego la variable.

Dirección de Tecnología Educativa - campus.inatec.edu.ni 5


Módulo: Bases de Datos con MySQL Workbench

Observaciones:

»» El disparador no puede referirse a tablas directamente por su nombre, incluyendo la misma


tabla a la que está asociado. Sin embargo, se pueden emplear las palabras clave OLD y NEW.
OLD se refiere a un registro existente que va a borrarse o que va a actualizarse antes de que
esto ocurra. NEW se refiere a un registro nuevo que se insertará o a un registro modificado
luego de que ocurre la modificación.
»» El disparador no puede invocar procedimientos almacenados utilizando la sentencia CALL.
(Esto significa, por ejemplo, que no se puede utilizar un procedimiento almacenado para evitar
la prohibición de referirse a tablas por su nombre).
»» El disparador no puede utilizar sentencias que inicien o finalicen una transacción, tal como
START TRANSACTION, COMMIT, o ROLLBACK.
»» Las palabras claves OLD y NEW permiten acceder a columnas en los registros afectados por
un disparador, a como se observa en la figura anterior #18.

b. Eliminación de un trigger

Para eliminar un disparador, debes seguir la sintaxis siguiente:

6 Dirección de Tecnología Educativa - campus.inatec.edu.ni


Unidad III: Procedimientos, Funciones y Triggers

Donde:

‰‰ Nombre_base_de_datos: Es el nombre de la base de datos a donde pertenece el disparador.


‰‰ Nombre_disp: Es el nombre del disparador a eliminar.

Ejemplo:

Observación:

»» El usuario que ejecute la sentencia DROP TRIGGER necesita tener asignado el privilegio/
permiso SUPER.

Dirección de Tecnología Educativa - campus.inatec.edu.ni 7


Módulo: Bases de Datos con MySQL Workbench

Bibliografía.

1. https://manuales.guebs.com/mysql-5.0/triggers.html#drop-trigger
Disparadores, año 2015. Web oficial: guebs.com

2. http://www.solucionjava.com/pdf/Curso_MySQL.pdf
Curso de programación en MySQL 5, año 2007. Publicado por: Ing. Cedric Simón

8 Dirección de Tecnología Educativa - campus.inatec.edu.ni

También podría gustarte