Buenos días y bienvenidos a todos los postgreseros y postgreseras, en la entrada de hoy estaremos hablando los triggers en PostgreSQL. ¿No sabéis qué son? En esta entrada lo veremos.
Un trigger o disparador es un objeto que se almacena en nuestra base de datos y se asocia con una tabla en concreto. Éste trigger se ejecuta cuando sucede algún evento sobre la tabla que está asociada y no es necesario que un usuario lo ejecute. Dichos eventos son las operaciones DML (Lenguaje de Manipulación de Datos). Los trigger se utilizan para implementar las Reglas de Negocio de una base de datos para verificar los datos que se van a insertar, borrar o actualizar.
Trabajando con PostgreSQL create trigger
Paso 1: Crear la Función
Para crear un trigger en PostgreSQL primero tenemos que crear una función donde el tipo que nos retorna dicha función sea un tipo trigger. A continuación mostramos la sintaxis que debemos de utilizar para crear este tipo de función que retorna un tipo trigger.
¿Quieres ser un profesional trabajando como Administrador de Bases PostgreSQL? ¿Ampliar tus conocimientos? Mira nuestro listado de Carreras para PostgreSQL.
CREATE FUNCTION nombre_funcion() RETURNS TRIGGER AS $$
BEGIN
Escribimos las sentencias que se vayan a ejecutar.
END;
$$ LANGUAGE plpgsql;
Paso 2: Crear el Trigger
Una vez que ya tenemos la función que va a ser ejecutada por el trigger, pues creamos este disparador donde le vamos a indicar cuando se active. En esta sintaxis se ejecutará una función antes de de cada inserción de datos en una tabla especificada.
CREATE TRIGGER nombre_trigger BEFORE INSERT ON tabla FOR EACH ROW EXECUTE PROCEDURE nombre _funcion;
Ejemplo de un trigger en PostgreSQL
Para que os quede un más claro como crear un trigger, os dejo un ejemplo en el cual se ejecutara un trigger llamado “trigg_stock_insert” cada vez que se realice un INSERT en la tabla “stock”, y éste llama a la función “stock_insert_trigger()”, que ésta función lo que hace es insertar esa fila en la tabla “stock_2018_t”. Acontinuación os dejo el código de la función y del trigger.
CREATE FUNCTION stock_insert_trigger() RETURNS TRIGGER AS $$
BEGIN
IF extract(year FROM NEW.day) = 2018 THEN
EXECUTE 'INSERT INTO stock_2018_t' || date_part('quarter', NEW.day) || ' VALUES ($1.*)' USING NEW;
END IF;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trigg_stock_insert BEFORE INSERT ON stock FOR EACH ROW EXECUTE PROCEDURE stock_insert_trigger();
Hasta aquí tenemos nuestra entrada semanal. Confiamos en con estas pinceladas seáis capaces de crear triggers sin ningún tipo de problema. Recuerda que tenemos cursos formativos en nuestra plataforma formativa, no lo dudes y apúntate; un solo pago y tienes acceso a todos los cursos publicados.