Disparadores

Páginas: 12 (2804 palabras) Publicado: 28 de abril de 2015
Disparadores (triggers) en PostgreSQL
Jue, 11/06/2009 - 22:19 — rafaelma

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 se ejecute una sola vez por comandoSQL (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 nombre de 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. Este lenguaje es el que utilizaremos en todoslos 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 almacenado que se vaya a utilizar por undisparador:
1. El procedimiento almacenado que se vaya a utilizar por el disparador debe de definirse e instalarse antes de definir el propio disparador.
 
2. Un procedimiento que se vaya a utilizar por un disparador no puede tener argumentos y tiene que devolver el tipo "trigger".
 
3. Un mismo procedimiento almacenado se puede utilizar por múltiples disparadores en diferentes tablas.
 
4. Procedimientosalmacenados utilizados por disparadores que se ejecutan una sola vez per comando SQL (statement-level) tienen que devolver siempre NULL.
 
5. 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.
 
6. Procedimientos almacenados utilizados por disparadores que se ejecutan una vez per filaafectada 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 valor de 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 elnombre 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 ejecutar sentencias SQL que a su vez pueden activar otros disparadores. Esto se conoce como...
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