Disparadores

Páginas: 12 (2980 palabras) Publicado: 19 de mayo de 2012
Disparadores (triggers) en PostgreSQL
http://www.postgresql.org.es/node/301
Una de las funcionalidades disponibles en PostgreSQL son los denominados disparadores (triggers ). En este
artículo vamos a introducirnos en el mundo de los disparadores, como funcionan y como podemos empezar a
utilizarlos.
Un disparador no es otra cosa que una acción definida en una tabla de nuestra base de datos yejecutada
automáticamente por una función programada por nosotros. Esta acción se activará, segun la definamos,
cuando realicemos un INSERT, un UPDATE ó un DELETE en la susodicha tabla.
Un disparador se puede definir de las siguientes maneras:





Para que ocurra ANTES de cualquier INSERT,UPDATE ó DELETE
Para que ocurra DESPUES de cualquier INSERT,UPDATE ó DELETE
Para que seejecute una sola vez por comando SQL (statement -level trigger)
Para que se ejecute por cada linea afectada por un comando SQL (row-level trigger)

Esta es la definición del comando SQL que se puede utilizar para definir un disparador en una tabla.
CREATE TRIGGER nombre { BEFORE | AFTER } { INSERT | UPDATE | DELETE [ OR ... ] }
ON tabla [ FOR [ EACH ] { ROW | STATEMENT } ]
EXECUTE PROCEDURE nombrede funcion ( argumentos )

Antes de definir el disparador tendremos que definir el procedimiento almacenado que se ejecutará cuando
nuestro disparador se active.
El procedimiento almacenado usado por nuestro disparador se puede programar en cualquiera de los lenguajes
de procedimientos disponibles, entre ellos, el proporcionado por defecto cuando se instala PostgreSQL,
PL/pgSQL. Estelenguaje es el que utilizaremos en todos los ejemplos de este árticulo. Podeis encontrar mas
información sobre procedimientos almacenados en el artículo "Procedimientos almacenados y PL/pgSQL"

Características y reglas a seguir
A continuación teneis algunas de las características y reglas más importantes a tener en cuenta, cuando
definamos un disparador y/ó programemos un procedimiento almacenadoque se vaya a utilizar por un
disparador:
1.
2.
3.
4.
5.
6.

El procedimiento almacenado que se vaya a utilizar por el dispa rador debe de definirse e instalarse
antes de definir el propio disparador.
Un procedimiento que se vaya a utilizar por un disparador no puede tener argumentos y tiene que
devolver el tipo "trigger".
Un mismo procedimiento almacenado se puede utilizar pormúltiples disparadores en diferentes
tablas.
Procedimientos almacenados utilizados por disparadores que se ejecutan una sola vez per comando
SQL (statement-level) tienen que devolver siempre NULL.
Procedimientos almacenados utilizados por disparadores que se ejecutan una vez per linea afectada
por el comando SQL (row-level) pueden devolver una fila de tabla.
Procedimientos almacenados utilizados pordisparadores que se ejecutan una vez per fila afectada
por el comando SQL (row-level) y ANTES de ejecutar el comando SQL que lo lanzó, pueden:
1. Retornar NULL para saltarse la operación en la fila afectada.
2. Ó devolver una fila de tabla (RECORD)

7.

Procedimientos almacenados utilizados por disparadores que se ejecutan DESPUES de ejecutar el
comando SQL que lo lanzó, ignoran el valorde retorno, asi que pueden retornar NULL sin
problemas.
8. En resumen, independendientemente de como se defina un disparador, el procedimiento almacenado
utilizado por dicho disparador tiene que devolver ó bien NULL, ó bien un valor RECORD con la
misma estructura que la tabla que lanzó dicho disparador.
9. Si una tabla tiene más de un disparador definido para un mismo evento(INSERT,UPDATE,DELETE), estos se ejecutarán en orden alfabético por el nombre del disparador.
En el caso de disparadores del tipo ANTES / row-level, la file retornada por cada disparador, se
convierte en la entrada del siguiente. Si alguno de ellos retorna NULL, la operación será anulada
para la fila afectada.
10. Procedimientos almacenados utilizados por disparadores pueden eje cutar sentencias SQL que a...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Disparos
  • disparo
  • Disparadores
  • disparadores
  • Diagrama de disparo
  • Disparo Mosfets
  • Disparidades Regionales
  • Disparidades Regionales

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS