trigger(bases de datos)

18
1 Triggers

Upload: fabianandrescano

Post on 12-Jan-2016

11 views

Category:

Documents


0 download

DESCRIPTION

Bases de datos

TRANSCRIPT

Page 1: Trigger(bases de datos)

1

Triggers

Page 2: Trigger(bases de datos)

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

Page 3: Trigger(bases de datos)

• 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

Page 4: Trigger(bases de datos)

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

Page 5: Trigger(bases de datos)

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

Page 6: Trigger(bases de datos)

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.

Page 7: Trigger(bases de datos)

PROCEDIMIENTOS ALMACENADOS

Page 8: Trigger(bases de datos)

PROCEDIMIENTOS ALMACENADOS

Ejemplo

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

usando la cláusula SELETC:

Page 9: Trigger(bases de datos)

PROCEDIMIENTOS ALMACENADOS

Ejemplo

Page 10: Trigger(bases de datos)

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

Page 11: Trigger(bases de datos)

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.

Page 12: Trigger(bases de datos)

SINTAXIS: Trigger

Page 13: Trigger(bases de datos)

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

Page 14: Trigger(bases de datos)

Trigger: Ejemplo

Después de definir la función se crea el trigger:

Page 15: Trigger(bases de datos)

Trigger: Ejemplo

Los trigger son usados frecuentemente para para hacer auditoria de

las tablas en una base de datos :

Page 16: Trigger(bases de datos)

Trigger: Ejemplo

Page 17: Trigger(bases de datos)

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

Page 18: Trigger(bases de datos)

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: