You are here
Disparadores o Triggers en una base de datos MySql Sin categoría 

Disparadores o Triggers en una base de datos MySql

Disparadores o Triggers en una base de datos MySql

Un Disparador o Trigger es una rutina autónoma asociada con una tabla o vista que automáticamente realiza una acción cuando una fila en la tabla o la vista se inserta (INSERT), se actualiza (UPDATE), o borra (DELETE).  Un Disparador nunca se llama directamente, en cambio, cuando una aplicación o usuario intenta insertar, actualizar, o anular una fila en una tabla, la acción definida en el disparador se ejecuta automáticamente (se dispara).

Las ventajas de usar los Disparadores son:

  • La entrada en vigor automática de restricciones de los datos, hace que los usuarios entren sólo valores válidos.
  • El mantenimiento de la aplicación se reduce, los cambios a un disparador se refleja automáticamente en todas las aplicaciones que tienen que ver con la tabla sin la necesidad de recompilar o relinquear.
  • Logs automáticos de cambios a las tablas. Una aplicación puede guardar un registro corriente de cambios, creando un disparador que se active siempre que una tabla se modifique.
  • La notificación automática de cambios a la Base de Datos con alertas de evento en los disparadores.

            Los Dispararores 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.

Un ejemplo de un disparador 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 disparador seria guardar los datos que se modifican de un cliente en otra base de datos que serviria de auditoría.

Cómo crear trigger en MySQL Server 5, disparadores para auditoría de tablas 

Explicamos cómo crear triggers o disparadores en MySQL Server 5.1. Mostramos qué es un trigger y cómo usarlo en MySQL. Como ejemplo creamos un trigger para simular un deshacer de una tabla, un trigger que guarda de forma automática los valores de los campos anteriores y los nuevos valores en caso de modificación de un registro. Cómo crear, eliminar y mostrar triggers en MySQL.

TRIGGER (DISPARADOR)

Un trigger o disparador en una Base de datos , es un procedimiento que se ejecuta cuando se cumple una condición establecida al realizar una operación. Dependiendo de la base de datos, los triggers pueden ser de inserción (INSERT), actualización (UPDATE) o borrado (DELETE). Algunas bases de datos pueden ejecutar triggers al crear, borrar o editar usuarios, tablas, bases de datos u otros objetos.

Los triggers son usados para mejorar la administración de la Base de datos, sin necesidad de contar con que el usuario ejecute sentencias de SQL determinadas para tal efecto. Además, pueden generar valores de columnas, pueden prevenir errores de datos, sincronizar tablas, modificar valores de una vista, auditorías de seguridad, etc.

La estructura básica de un trigger es:

  • Llamada de activación: es la sentencia que permite “disparar” el código a ejecutar.
  • Restricción: es la condición necesaria para realizar el código. Esta restricción puede ser de tipo condicional o de tipo nulidad.
  • Acción a ejecutar: es la secuencia de instrucciones a ejecutar una vez que se han cumplido las condiciones iniciales.

 

Existen dos tipos de disparadores que se clasifican según la cantidad de ejecuciones a realizar:

  • Row Triggers(o disparadores de fila): son aquellos que se ejecutaran n-veces si se llaman n-veces desde la tabla asociada al trigger.
  • Statement Triggers(o disparadores de secuencia): son áquellos que sin importar la cantidad de veces que se cumpla con la condición, su ejecución es única.

 

Cómo crear un trigger en mysql server 5.1

Para crear un trigger o disparador en MySQL Server deberemos usar alguna aplicación que permita ejecutar sentencias SQL, por ejemplo MySQL Administrator con MySQL Query Browser:

O desde una terminal (MS-DOS de Windows o Linux) ejecutando el comando “mysql”:

mysql –user=nombre_usuario –pasword=contraseña_usuario base_datos

En cuanto dispongamos de la aplicación para ejecutar sentencias SQL y un usuario de MySQL Server con permisos suficientes para crear triggers o disparadores en la base de datos donde queramos, a continuación deberemos analizar para qué vamos a usar el trigger, dependiendo de la tarea a realizar necesitaremos, por ejemplo, una tabla auxiliar.

Para obtener el usuario actual de MySQL Server hemos usado la función CURRENT_USER() y para obtener la fecha y la hora actuales hemos usado la función NOW().

La sintaxis para crear un trigger en MySQL Server:

CREATE    [DEFINER = { user | CURRENT_USER }]    TRIGGER trigger_name trigger_time trigger_event    ON tbl_name FOR EACH ROW trigger_body

  
Otras acciones o tareas a realizar con los triggers o disparadores de mysql

  • Paraconsultar los triggers o disparadores creados en una base de datos ejecutaremos el comando SQL:

 

show create triggers;

 

Nos mostrará un registro por cada trigger creado con los campos: trigger, event, table, statement, timing, created, sql_mode, definer, character_set_client, collation_connection, database_collation. Las importantes son:

  • Trigger: almacena el nombre del disparador.
  • Event: indica el tipo de trigger (insert, update, delete).
  • Table: tabla de la base de datos a la que se asocia el trigger.
  • Statement: código SQL del trigger.
  • Timing: tiempo en que se ejecutará el trigger: before (antes), after (después).
  • Paraeliminar un trigger o disparador existente ejecutaremos la siguiente consulta:

drop trigger nombre_trigger;

  • Paramostrar la consulta SQL completa de creación de un trigger ejecutaremos el comando:

show create trigger nombre_trigger;

  • Almacenamientode los trigger en MySQL: los triggers o disparadores se almacenan en la tabla TRIGGERS del catálogo del sistema information_schema, para verlos:

select * from information_schema.triggers;

 

Otras opciones y funcionalidades de los trigger en mysql

  • Seguridad: si queremos que un usuario, además del superusuario “root” tenga permisos para crear triggers o disparadores en una tabla, ejecutaremos el comando SQL:

 

GRANT CREATE TRIGGER ON nombre_tabla TO nombre_usuario

 

  • Seguridad: para dar permisos de creación de triggers para un usuario para todas las tablas ejecutaremos el comando SQL:

 

GRANT CREATE TRIGGER ON *.* TO nombre_usuario


 

Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros 

Cursos y Diplomados de Tecnología Web visita www.uneweb.edu.ve  para más información

Related posts

Comments

Leave a Comment


*