Está en la página 1de 18

Triggers

Conceptos bsicos
Un disparador (trigger) es un procedimiento
almacenado asociado a una tabla que se ejecuta al
realizar una operacin bsica (INSERT, DELETE o
UPDATE).
La operacin bsica que despierta al trigger es conocida
como sentencia disparadora. La ejecucin del disparador
puede ser antes (BEFORE) o despus (AFTER) de llevar
a cabo la sentencia disparadora.

Conceptos bsicos
Un trigger se puede programar para que :
Ocurra ANTES de cualquier INSERT,UPDATE DELETE
Ocurra DESPUES de cualquier INSERT,UPDATE DELETE
se ejecute una sola vez por comando SQL
(statement-level trigger)

se ejecute por cada linea afectada por un comando SQL


(row-level trigger)

Conceptos bsicos

Antes de definir un trigger se debe definir un


procedimiento almacenado que se ejecutar
cuando el trigger se active.

El procedimiento almacenado se puede


programar en un lenguaje de procedimientos,
(PL/pgSQL).

PROCEDIMIENTOS ALMACENADOS
Un procedimiento almacenado se puede definir como
un programa, procedimiento funcin, almacenado en
la base de datos y compilado previamente.

El procedimiento almacenado se puede programar en


un lenguaje de procedimientos,
Ej.
PL/pgSQL Postgres
Psql Oracle

PROCEDIMIENTOS ALMACENADOS
Ventajas
La ejecucin del procedimiento ocurre en el servidor de
bases de datos. Esto probablemente aumentar el
rendimiento de la aplicacin.
Diferentes tipos de clientes implementados en diferentes
sistemas o lenguajes de programacin pueden acceder a
la misma base de datos.

PROCEDIMIENTOS ALMACENADOS

PROCEDIMIENTOS ALMACENADOS
Ejemplo

Una funcin se puede llamar


usando la clusula SELETC:

SELECT suma(5, 2);

PROCEDIMIENTOS ALMACENADOS
Ejemplo

Variables especiales en PL/pgSQL


NEW: Variable que contiene la nueva fila de la tabla para las
operaciones INSERT/UPDATE en disparadores del tipo rowlevel.

OLD: Variable que contiene la antigua fila de la tabla. Al


igual que la anterior, esta variable es tipo de dato RECORD.

TG_NAME: Contiene el nombre del trigger que est usando


la funcin actualmente

Variables especiales en PL/pgSQL


TG_WHEN: Una cadena de texto con el valor BEFORE o
AFTER

TG_LEVEL: Contiene el valor ROW o STATEMENT


dependiendo de cmo se ha definido el trigger.

TG_OP: Contiene el valor INSERT, UPDATE o DELETE


dependiendo de la operacin activ el trigger.

SINTAXIS: Trigger

Trigger: Ejemplo
id

nombre

cantidad

Tornillo rosca fina

50

Tomacorriente Americano

20

Cabe elctrico Num 12

30

id

producto_id

cant

Artculos

fecha

Pedidos

Crear un trigger que inserte automticamente un registro en la tabla


pedidos cuando la cantidad de un artculo en inventario es baja.

Trigger: Ejemplo

Despus de definir la funcin se crea el trigger:

Trigger: Ejemplo
Los trigger son usados frecuentemente para para hacer auditoria de
las tablas en una base de datos :

Trigger: Ejemplo

Trigger: Ejemplo

UPDATE cliente set ciudad='Medellin'


WHERE cliente.identificacion='12345678';

Despus de ejecutar la instruccin anterior se inserta automticamente un


registro en la tabla auditoria

Trigger

Para borrar un trigger se debe especificar el


nombre del trigger y la tabla donde se cre.
Ej:
DROP TRIGGER
tbl_atributos_tg_audit
ON cliente;

También podría gustarte