Creación y uso de funciones y triggers en bases de datos SQL

Clase 14 de 34Curso de PostgreSQL Aplicado a Ciencia de Datos

Resumen

¿Cómo crear funciones en PL/pgSQL?

Dominar las funciones en PL/pgSQL es fundamental para maximizar el potencial de tus bases de datos PostgreSQL. En esta guía, nos enfocaremos en la estructura básica de las funciones y cómo integrarlas utilizando el lenguaje de procedimiento PL/pgSQL.

¿Cuál es la estructura básica de una función?

Para crear funciones de manera eficiente, es crucial memorizar su estructura. A continuación, te muestro cómo crear una función paso a paso:

  1. Definición de la función: Inicia con CREATE FUNCTION <nombre_función> <parámetros>.
  2. Tipo de retorno: Declara lo que tu función retornará, como un entero (RETURNS integer).
  3. Lenguaje utilizado: Especifica que la función usará PL/pgSQL al escribir LANGUAGE plpgsql.
  4. Cuerpo de la función: Entre BEGIN y END, define la lógica de tu función.

Ejemplo de función para contar registros:

CREATE FUNCTION cuenta_total_peliculas() RETURNS integer AS $$
BEGIN
   RETURN (SELECT COUNT(*) FROM peliculas);
END;
$$ LANGUAGE plpgsql;

Esta función regresa el conteo total de películas en nuestra tabla de forma directa y sencilla.

¿Cómo ejecutar una función en PostgreSQL?

Para ejecutar y probar la función que has creado, simplemente utiliza un comando SELECT:

SELECT cuenta_total_peliculas();

Este comando te mostrará el total de películas almacenadas en tu base de datos.

¿Qué son los triggers y cómo funcionan?

Los triggers son una poderosa característica de PostgreSQL, diseñada para ejecutar automáticamente acciones específicas cuando ocurren eventos en la base de datos, como inserciones, actualizaciones o eliminaciones.

¿Cómo crear un trigger asociado a una función?

Para crear funciones que involucren triggers, sigue estos pasos:

  1. Función de trigger: Crea una función específica que ejecutará acciones al producirse el evento.
  2. Definición del trigger: Vincula la función a una tabla y especifica cuándo se debe ejecutar.

Ejemplo de función de trigger:

CREATE FUNCTION duplica_registro() RETURNS trigger AS $$
BEGIN
   INSERT INTO tabla_b (campo_b, campo_c) VALUES (NEW.campo_a, NEW.campo_b);
   RETURN NEW;
END;
$$ LANGUAGE plpgsql;

Este ejemplo toma una inserción en tabla_a y la duplica en tabla_b.

¿Cómo asociar un trigger a una tabla?

Una vez que hayas creado la función de trigger, asóciala a una tabla con el siguiente comando:

CREATE TRIGGER duplicado_antes_insert
BEFORE INSERT ON tabla_a
FOR EACH ROW EXECUTE FUNCTION duplica_registro();

Este código indica que antes de cualquier inserción en tabla_a, el trigger ejecutará la función duplica_registro.

¿Qué aplicaciones prácticas tienen los triggers?

Los triggers permiten realizar acciones automáticas, mantener la consistencia de los datos y actualizar estadísticas o registros de auditoría inmediatamente después de los cambios en las tablas.

Ya sea para sincronizar tablas o mantener cálculos actualizados, los triggers pueden facilitar un flujo de trabajo más eficiente y, en conjunto con PL/pgSQL, ofrecen un control avanzado sobre las operaciones de la base de datos.

¡Sigue explorando estas potentes herramientas y amplía tus habilidades en bases de datos PostgreSQL! Mantente siempre curioso y sigue aprendiendo.