Trigger (base de datos)

Trigger (base de datos)

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.

Contenido

Usos

Son usados para mejorar la administración de la Base de datos, sin necesidad de contar con que el usuario ejecute la sentencia de SQL.

Además, pueden generar valores de columnas, previene errores de datos, sincroniza tablas, modifica valores de una vista, etc.

Permite implementar programas basados en paradigma lógico (sistemas expertos, deducción).

Componentes principales

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.

Tipos

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

  • Row Triggers (o Disparadores de fila): son aquellas que se ejecutaran n-veces si se llama 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.

Pueden ser de sesión y almacenados; pero no son de fiar[cita requerida].

Efectos y características

  • No aceptan parámetros o argumentos (pero podrían almacenar los datos afectados en tablas temporales)
  • No pueden ejecutar las operaciones COMMIT o ROLLBACK por que estas son parte de la sentencia SQL del disparador (únicamente a través de transacciones autónomas)
  • Pueden causar errores de mutaciones en las tablas, si se han escrito de manera deficiente.

Ejemplo

Un sencillo ejemplo (para SQL Server) sería crear un Trigger para insertar un pedido de algún producto cuando la cantidad de éste, en nuestro almacén, sea inferior a un valor dado.

BEFORE UPDATE ON tabla_almacen
FOR ALL records
    IF :NEW.producto < 100 THEN
         INSERT INTO tabla_pedidos(producto) VALUES ('1000');
    END IF;
SELECT DBO.POLVE.TEST
END

Disparadores en MySQL

Los disparadores son soportados en MySQL a partir de la versión 5.0.2. Algunos de los soportes existentes son los disparadores para las sentencias INSERT, UPDATE y DELETE

El estándar SQL:2003 requiere que los disparadores den a los programadores acceso a las variables de un registro utilizando una sintaxis como REFERENCING NEW AS n. Por ejemplo, si un disparador está monitoreando los cambios en la columna salario, podría escribirse un disparador como:

  CREATE TRIGGER ver_salario
     BEFORE UPDATE ON empleados
     REFERENCING NEW ROW AS n, OLD ROW AS o
     FOR EACH ROW
     IF n.salario <> o.salario THEN 
     END IF;

Como en MySQL las sentencias se ejecutan luego de escribir el signo punto y coma (;), cabe destacar que para crear un disparador en MySQL, antes se escribe la sentencia DELIMITER seguida de un carácter tal como |, la cual asigna la función del punto y coma (;) a otro carácter permitiendo que el disparador sea escrito usando los punto y comas sin que se ejecute mientras se escribe; después de escrito el disparador se escribe nuevamente la sentencia DELIMITER ; para asignar al punto y coma su función habitual.

Disparadores en PostgresQL

Desde 1997 PostgresQL soporta el uso de disparadores, estos pueden anexarse a las tablas pero no a las vistas; aunque a las vistas se les pueden crear reglas.

Al igual que en MySQL los disparadores de PostgresQL se pueden activar luego de sentencias INSERT, UPDATE o DELETE

Cuando hay varios disparadores, se activan en orden alfabético.

Además de permitir el uso de funciones en el lenguaje nativo de PostgresQL, PL/PgSQL, los disparadores también permiten invocar funciones escritas en otros lenguajes como PL/Perl.

En Postgres un disparador ejecuta una función la cual contiene el código de lo que se requiere, esto difiere del método expuesto anteriormente para MySQL que escribe el código a ejecutarse dentro del mismo disparador.

El siguiente es un ejemplo de disparador creado con su respectiva función:

CREATE OR REPLACE FUNCTION actualizar() RETURNS TRIGGER AS $ejemplo$
  BEGIN
       NEW.nombre := NEW.nombres || ' ' || NEW.apellidos ;
       RETURN NEW;
  END;
$ejemplo$ LANGUAGE plpgsql;
 
CREATE TRIGGER ejemplo
BEFORE INSERT OR UPDATE ON tabla
    FOR EACH ROW EXECUTE PROCEDURE actualizar();

Enlaces externos


Wikimedia foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Mira otros diccionarios:

  • Trigger (base de datos) — Un trigger o un disparador en una Base de datos es un evento que se ejecuta cuando se cumple una condición establecida al realizar una operación de inserción (INSERT), actualización (UPDATE) o borrado (DELETE) …   Enciclopedia Universal

  • Comparación de sistemas administradores de bases de datos relacionales — Anexo:Comparación de sistemas administradores de bases de datos relacionales Saltar a navegación, búsqueda Las siguientes tablas comparan información general y técnica de diferentes RDBMS. Para más información, vea los enlaces de cada producto.… …   Wikipedia Español

  • Anexo:Comparación de sistemas administradores de bases de datos relacionales — Las siguientes tablas comparan información general y técnica de diferentes RDBMS. Para más información, vea los enlaces de cada producto. Este artículo no incluye a todos los productos o es necesario actualizarse. Contenido 1 Información general… …   Wikipedia Español

  • PL/SQL — (Procedural Language/Structured Query Language) es un lenguaje de programación incrustado en Oracle. PL/SQL soportara todas las consultas, ya que la manipulación de datos que se usa es la misma que en SQL, incluyendo nuevas características: El… …   Wikipedia Español

  • SQL — Desarrollador(es) IBM ISO/IEC 9075 1:2008 Información general Paradigma Multiparadigma …   Wikipedia Español

  • PostgreSQL — Saltar a navegación, búsqueda PostgreSQL …   Wikipedia Español

  • PL/PgSQL — (Procedural Language/PostgreSQL Structured Query Language) es un lenguaje imperativo provisto por el gestor de base de datos PostgreSQL. Permite ejecutar comandos SQL mediante un lenguaje de sentencias imperativas y uso de funciones, dando mucho… …   Wikipedia Español

  • Viciojuegos.com — Saltar a navegación, búsqueda VicioJuegos.com es una revista independiente en línea sobre videojuegos y ocio eléctronico fundada en 2002 por Álvaro Morillas Correa y con una base de usuarios provenientes en su mayoría (o al menos en sus inicios)… …   Wikipedia Español

  • Historia del software libre y de código abierto — Mapa conceptual del software libre. La historia del software libre y de código abierto como lo conocemos actualmente, se remonta a inicios de los años 1980, época en la que la mayoría de software era privativo y surgió la necesidad, por parte de… …   Wikipedia Español

  • El núcleo — The Core Título El núcleo Ficha técnica Dirección Jon Amiel Dirección artística Andrew Neskoromny Sandi Tanaka Producción …   Wikipedia Español

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”