triggers

Páginas: 9 (2116 palabras) Publicado: 12 de diciembre de 2014
Bases de Datos Avanzadas


DML

TRIGGERS



Trigger (definición)
Un TRIGGER (disparador) es un mecanismo que
se almacena en la BD que ejecuta
automáticamente un conjunto de acciones
cuando se produce algún evento sobre una tabla,
típicamente una operación INSERT, UPDATE o
DELETE.
Un TRIGGER es una acción en cadena que
empieza cuando un evento específico ocurre
sobre una tablaespecífica.



Triggers
DataBase
Trigger
INSERT

UPDATE

Tabla
[columna]

INSERT
UPDATE
DELETE

DELETE


Rutina

Uso de los Triggers
En la implementación de restricciones de
integridad complejas.
Implementación de auditoría de la información
contenida en una tabla (registro y monitoreo en la
actividad de cambio de datos)
Actualización automática de datos que deballevarse a cabo cuando se desarrolle alguna acción
(consolidaciones, acumulados, re-cálculos).
Aplicación de reglas de negocio que no puedan
establecerse a nivel de constraints
Borrados o modificaciones en cascada
Docente: MTI Isaí Jiménez Rojas

Estructura general de un Triggerer



Creación del Trigger
CREATE [OR REPLACE] TRIGGER trigName….
La cláusula OR REPLACE se utiliza cuandoel trigger ya
existe y va a ser sustituido por una nueva definición
trigName (nombre del trigger)
Debe ser un nombre único
El nombre debe contener letras, números y el único
caracter válido es el guión bajo “_”
Se recomienda incluir en el nombre del trigger:
Identificador de la tabla
Identificador del evento/momento
Ejemplo:

CREATE TRIGGER empleado_bu (Before Update en empleado)
CREATETRIGGER bi_empleado (Before Insert en empleado)


Temporalidad del evento
(cuándo se dispara el evento del trigger)

BEFORE
Ejecuta la acción asociada al trigger antes de que la
sentencia DML sea ejecutada sobre la tabla(evento)
CREATE TRIGGER triggName
BEFORE Evento ON tabName

ANTES

EVENTO

AFTER
Ejecuta la acción asociada al trigger después de que
la sentencia DML seaejecutada sobre la tabla
(evento)
CREATE TRIGGER triggName
AFTER Evento ON tabName


EVENTO

DESPUES

Eventos que causan el disparo
CREATE TRIGGER trigName
{BEFORE | AFTER }
{INSERT|DELETE|UPDATE [OF campo] ON tabla
Establece el evento que tiene que suceder sobre la
tabla para que el trigger dispare la acción asociada.
En el caso del evento UPDATE se puede controlar
que el trigger sedispare cuando se actualice algún
campo en particular.



Nota: algunos RDBMS como
Informix soportan el evento
SELECT, Oracle No!

Eventos que causan el disparo
Ejemplos:
CREATE TRIGGER ai_cliente
AFTER INSERT ON cliente …
CREATE TRIGGER bd_pedido
BEFORE DELETE ON cliente …
CREATE TRIGGER bu_empleado
BEFORE UPDATE ON cliente …
CREATE TRIGGER bu_empleado
BEFORE UPDATE OF sueldoON cliente …


Granularidad del evento
Ejecución a nivel de sentencia
Se ejecuta la acción asociada una única vez
independientemente del número de registros afectados o
involucrados en el evento definido por el trigger
CREATE TRIGGER NombreTrigger
BEFORE INSERT ON NombreTabla
[STATEMENT] . . .

Ejecución a nivel de fila
Se ejecuta la acción tantas veces como registros (filas) se
veanafectados o involucrados por el evento asociado al trigger
CREATE TRIGGER NombreTrigger
BEFORE UPDATE ON NombreTabla
FOR EACH ROW
[WHEN …]….
[STATEMENTS]


Acción
Determina la(s) acción(es) que será(n) ejecutadas
cuando se dispare el trigger.
CREATE TRIGGER trigName
{BEFORE | AFTER | INSTEAD OF}
{INSERT|DELETE|UPDATE [OF campo] ON tabla
[FOR EACH ROW [WHEN…] ]
BEGIN
INSTRUCCIONESEND;



Ejemplos
A nivel de sentencia
CREATE TRIGGER au_venta
AFTER UPDATE ON venta
BEGIN
INSERT INTO bitacora
VALUES(SYSDATE, USER, ‘INSERT’);
END;

A nivel registro
CREATE TRIGGER au_venta
AFTER UPDATE ON venta
FOR EACH ROW
BEGIN
INSERT INTO bitacora
VALUES(SYSDATE, USER, ‘INSERT’);
END;


Orden de ejecución
Una sentencia SQL puede disparar varios
TRIGGERS, la...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Triggers
  • TRIGGERS
  • Triggers
  • Triggers
  • Triggers
  • triggers
  • Triggers
  • Triggers en mysql

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS