Está en la página 1de 2

TRIGGERS, Conceptos teóricos

Se llama trigger (o disparador) al código que se ejecuta automáticamente cuando se realiza una
determinada acción sobre la base de datos, tenemos tres tipos triggers:

 Triggers de tabla. Se trata de triggers que se disparan cuando ocurre una acción DML sobre una
tabla.
 Triggers de vista. Se lanzan cuando ocurre una acción DML sobre una vista.
 Triggers de sistema. Se disparan cuando se produce un evento sobre la base de datos (conexión
de un usuario, borrado de un objeto,…)

TRIGGERS EN POSTGRESQL
Un trigger en PostgreSQL consta de dos partes:

1. La definición de la función asociada al trigger que es la que ejecuta la acción en respuesta al


evento, es bueno recordar que estos eventos son INSERT, UPDATE Y DELETE.
2. La definición de trigger que indicará:
a. La tabla de la cual se esperarán los eventos
b. El evento al cual responderá el trigger.

Definición de la función asociada al trigger.

Create or replace function nombre_funcion (parámetros)


Returns trigger as $$
Declare
Declaración de variables
BEGIN
Sentencia 1…..;
Sentencia 2 …;
………………….;
………………….;
………………….;
Return tipo_de_retorno
end
$$ language 'plpgslq';

Es importante tener en cuenta lo siguiente:

Primero, el tipo de retorno ya no es un tipo normal de los que estudiamos anteriormente para
PostgreSQL, sino el tipo especial trigger

Segundo, dependiendo de las acciones del trigger, el parámetro en el comando RETURN puede
variar.
Definición del trigger

Create trigger nombredeltrigger


[AFTER , BEFORE] [UPDATE, INSERT, DELETE]
ON table
FOR EACH [ROW, STATEMENT]
EXECUTE PROCEDURE FUNCION;
Donde cada una de las instrucciones realiza lo siguiente:
CREATE TRIGGER nombredeltrigger = define el nombre que tendrá el trigger
[AFTER | BEFORE] = Define si el trigger se dispara antes o después de realizado el evento.
[INSERT | UPDATE | DELETE] = Tipo de evento al que responderá el trigger.
ON nombretabla = Nombre de la tabla de la cual se esperan los eventos
FOR EACH [ROW | STATEMENT ] = Para cada fila o para cada sentencia
EXECUTE PROCEDURE función = Nombre de la función que se va a ejecutar (con sus parámetros si
es que los necesitara)

Antes de empezar a definir el trigger es necesario conocer unas cuantas variables del sistema que
por defecto que nos provee PostgreSQL, éstas son:

CURRENT_USER = Nos muestra el nombre del usuario que está actualmente conectado a la base de
datos y que ejecuta las sentencias.
CURRENT_DATE = nos muestra la fecha actual del sistema
CURRENT_TIME = Nos muestra la hora actual del sistema.
DIFERENCIA ENTRE BEFORE Y AFTER
Los triggers BEFORE se utilizan cuando queremos que la validación se lleve a cabo antes de realizar
el evento. Por ejemplo, usted ejecuta una base de datos de un banco, en esta tenemos la tabla
cuentas y la tabla operaciones. Si un usuario hace un retiro de su cuenta, usted quiere asegurarse
de que el usuario tenga suficientes fondos en su cuenta antes de realizar el retiro. El trigger BEFORE
permitirá hacer esta validación antes de realizar la transacción si el saldo de las cuentas no es
suficiente.

Los triggers AFTER se utilizan cuando queremos almacenar información de una tabla en otra. Estos
se ejecutan después de que se han realizado los cambios en la base de datos. Volvamos a nuestro
ejemplo anterior. Después de una transacción exitosa, nos gustaría que actualizar la tabla cuentas,
el trigger AFTER permitirá realizar esta operación.

MANEJO DE LAS VARIABLES OLD Y NEW


Variables del trigger
PostgreSQL maneja unas cuantas variables al momento de ejecutar un trigger, además de la variable
TG_OP que explicaremos en clase tenemos además:
NEW = Variable compuesta que almacena los nuevos valores de la tupla, se utiliza para la inserción
de nuevos datos.
OLD = Variable compuesta que almacena los valores antiguos de la tupla, se utiliza para la
actualización y eliminación de datos.

También podría gustarte