Sql Tema 10

Publicado: 13 de febrero de 2015 en Actualidad

Intro a SQL y MySQL – Tema 12 – Triggers

En MySQL (a partir de la versión 5.0.2) se permite utilizar "disparadores" (triggers), que son una serie de pasos que se pondrán en marcha cuando ocurra un cierto evento en una tabla.

Los eventos pueden ser un INSERT, un UPDATE o un DELETE de datos de la tabla, y podemos detallar si queremos que los pasos se den antes (BEFORE) del evento o después (AFTER) del evento.

Como ejemplo habitual, podríamos hacer un BEFORE INSERT para comprobar que los datos son válidos antes de guardarlos realmente en la tabla.

Pero vamos a empezar probar con un ejemplo, que aunque sea menos útil, será más fácil de aplicar.

Vamos a crear una base de datos sencilla, con sólo dos tablas. En una tabla guardaremos datos de personas, y en la otra anotaremos cuando se ha introducido cada dato. La estructura básica sería ésta:

CREATE DATABASE ejemplotriggers; USE ejemplotriggers; CREATE TABLE persona ( codigo varchar(10), nombre varchar(50), edad decimal(3), PRIMARY KEY (`codigo`) ); CREATE TABLE nuevosDatos ( codigo varchar(10), cuando date, tipo char(1) );

Para que se añada un dato en la segunda tabla cada vez que insertemos en la primera, creamos un TRIGGER que saltará con un AFTER INSERT. Para indicar los pasos que debe hacer, se usa la expresión "FOR EACH ROW" (para cada fila), así:

CREATE TRIGGER modificacion AFTER INSERT ON persona FOR EACH ROW INSERT INTO nuevosDatos VALUES (NEW.codigo, CURRENT_DATE, 'i');

(Los datos que introduciremos serán: el código de la persona, la fecha actual y una letra "i" para indicar que el cambio ha sido la "inserción" de un dato nuevo).

Si ahora introducimos un dato en la tabla personas:

INSERT INTO persona VALUES ('1','Juan',20);

La tabla de "nuevosDatos" habrá cambiado:

SELECT * FROM nuevosDatos;
+
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s