Cargando



PostgreSQL - Funciones como Triggers

En este tutorial vamos a ver como crear funciones como triggers en PostgreSQL de forma que podamos crear funcionalidades más poderosas dentro de nuestra base de datos.


nov 12 2013 15:37
Profesional
nov 12 2013 19:34
PostgreSQL nos permite utilizar diferentes lenguajes para hacer funciones, esta funcionalidad es bastante útil y hace que sea una de las bases de datos más flexibles y poderosas, pero también permite hacer funciones como triggers, es decir funciones que detectan automáticamente que acción ha ocurrido y detonan una acción diferente, es decir, si insertamos en una tabla por ejemplo, se pudiera activar un trigger que actualizara en otra, por poner un funcionamiento muy básico de lo que es un trigger.

Funciones como Triggers

Ningún motor de base de datos de mérito debería estar sin la posibilidad de utilizar triggers para detectar y manejar automáticamente cambios en los datos. PostgreSQL ofrece triggers a nivel de sentencia y a nivel de registros; los que son a nivel de sentencia corren una vez por cada sentencia, en cambio los que son a nivel de registros pueden correr muchas veces, por ejemplo si hacemos un UPDATE que afecta a 1500 registros, un trigger a nivel de sentencia solo correría una vez, en cambio el de registro correría hasta 1500 veces.

Otro de los puntos importantes en este tema es la distinción que se hace entre las instrucciones BEFORE, AFTER y la INSTEAD OF en un trigger.

Un trigger que funciona con BEFORE se dispara antes de la ejecución del comando dando la oportunidad de cambiar o cancelar o manipular los datos antes que cambien, un trigger AFTER se dispara luego de la ejecución del cambio, dando la oportunidad así de obtener los datos ya modificados, este tipo de trigger es más que todo utilizado en funciones de logs y de replicación, el trigger INSTEAD OF corre en vez de la acción que normalmente se realizaría, también otra de las particularidades de este es que solamente funciona con las vistas.

Construir una Función con Trigger

Como cuando hablamos de funciones sabemos que podemos utilizar otros lenguajes para hacerlas, en el caso de las funciones como triggers también es posible utilizar casi cualquier lenguaje, sin embargo el PL/pgSQL es un favorito para cumplir estas tareas, por ello el siguiente ejemplo que veremos en la imagen estará hecho en este lenguaje, luego que veamos el ejemplo lo explicaremos detalladamente:


pg_funciones_triggers.jpg


1. Se define la función como trigger y puede utilizarse en cualquier tabla que tenga una columna upd_ts. Se cambiará el valor de esta columna antes de hacer el retorno. Se hace el llamado en el evento BEFORE porque si se utilizara en el AFTER todos los cambios al nuevo registro serian ignorados.

2. El trigger se disparará antes que el registro sea almacenado.

3. Esta funcionalidad que está disponible solo en PostgreSQL 9.0 o superior nos permite solamente modificar los registros que efectivamente hayan sido afectados, en versiones anteriores había que hacer comparaciones entre el campo viejo y el nuevo, esto sin embargo no está soportado para el evento INSTEAD OF.

4. Ligamos el Trigger a la tabla.

Con esto terminamos este tutorial donde hemos visto como crear un Trigger que será implementado en una función, adicionalmente de saber que eventos que podemos utilizar cuando los necesitemos.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X