Trigger(bases de datos)

Post on 12-Jan-2016

16 views 0 download

description

Bases de datos

Transcript of Trigger(bases de datos)

1

Triggers

Un disparador (trigger) es un procedimiento

almacenado asociado a una tabla que se ejecuta al

realizar una operación “básica” (INSERT, DELETE o

UPDATE).

La operación básica que despierta al trigger es conocida

como sentencia disparadora. La ejecución del disparador

puede ser antes (BEFORE) o después (AFTER) de llevar

a cabo la sentencia disparadora.

Conceptos básicos

• 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)

Un trigger se puede programar para que :

Conceptos básicos

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).

Conceptos básicos

PROCEDIMIENTOS ALMACENADOS

Un procedimiento almacenado se puede definir como

un programa, procedimiento ó función, 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 ejecución del procedimiento ocurre en el servidor de

bases de datos. Esto probablemente aumentará el

rendimiento de la aplicación.

Diferentes tipos de clientes implementados en diferentes

sistemas o lenguajes de programación pueden acceder a

la misma base de datos.

PROCEDIMIENTOS ALMACENADOS

PROCEDIMIENTOS ALMACENADOS

Ejemplo

SELECT suma(5, 2); Una función se puede llamar

usando la cláusula SELETC:

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 row-

level.

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 función 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 cómo se ha definido el trigger.

TG_OP: Contiene el valor INSERT, UPDATE o DELETE

dependiendo de la operación activó el trigger.

SINTAXIS: Trigger

Trigger: Ejemplo

id nombre cantidad

1 Tornillo rosca fina 50

2 Tomacorriente Americano 20

3 Cabe eléctrico Num 12 30

id producto_id cant fecha

Crear un trigger que inserte automáticamente un registro en la tabla

pedidos cuando la cantidad de un artículo en inventario es baja.

Artículos

Pedidos

Trigger: Ejemplo

Después de definir la función 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';

Después de ejecutar la instrucción anterior se inserta automáticamente un

registro en la tabla auditoria

Trigger

Para borrar un trigger se debe especificar el

nombre del trigger y la tabla donde se creó.

DROP TRIGGER

tbl_atributos_tg_audit

ON cliente;

Ej: