Date post: | 12-Jan-2016 |
Category: |
Documents |
Upload: | fabianandrescano |
View: | 11 times |
Download: | 0 times |
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: