trigger (base de datos)

Anuncio
TRIGGER (BASE DE DATOS)
Un trigger (o disparador) en una Base de datos , es un procedimiento que se ejecuta cuando
se cumple una condición establecida al realizar una operación. Dependiendo de la base de
datos, los triggers pueden ser de inserción (INSERT), actualización (UPDATE) o borrado
(DELETE). Algunas bases de datos pueden ejecutar triggers al crear, borrar o editar
usuarios, tablas, bases de datos u otros objetos
CARACTERISTICAS



No aceptan parámetros o argumentos (pero podrían almacenar los datos afectados
en tablas temporales)
No pueden ejecutar las operaciones COMMIT o ROLLBACK por que estas son parte
de la sentencia SQL del disparador (únicamente a través de transacciones
autónomas)
Pueden causar errores de mutaciones en las tablas, si se han escrito de manera
deficiente.
VENTAJAS
Seguridad de los datos mejorada
•Ofrecen chequeos de seguridad basada en valores.Integridad de los datos mejorada:
•Fuerzan restricciones dinámicas de integridad de datos yde integridad referencial.
•Aseguran que las operaciones relacionadas se realizan juntas de forma implícita.
•Respuesta instantánea ante un evento auditado
•Ofrece un mayor control sobre la B.D
DESVANTAJAS
•Hay que definir con anticipación la tarea querealizara el trigger
•Peligro de pérdida en Reorganizaciones
•Hay que programarlos para cada DBMS
•Un Trigger nunca se llama directamente
.•Los triggers no se desarrollan pensando en unsolo registro, los mismos deben funcionar
enconjunto con los datos ya que se disparan por operación y no por registro
.•Por funcionalidad, no hay que poner en uno sololas funciones de INSERT,UPDATE y
DELETE
.•Utilizar moderadamente los triggers
.•No se pueden utilizar en tablas temporales.
EJEMPLOS DE UN TRIGGER
1. Este es un ejercicio para realizar auditorias almacenando en una tabla los eventos de
instrucciones DDL que se realicen en la base de datos:
create or replace trigger ddltrigger
after ddl on database
begin
insert into adm
values ( ora_login_user, sysdate, ora_sysevent, ora_dict_obj_type,
ora_dict_obj_owner, ora_dict_obj_name );
end;
/
2. En este ejecicio obtendremos la sumatoria y el promedio de los saldos de los
articulos:
set serveroutput on;
create or replace trigger esta_articulo
after insert or delete or update on articulo
declare
cursor c_estadistico is
select codtipo, avg(saldo) promedio,sum(saldo) sumatoria
from articulo
group by codtipo;
begin
for v_estadistica in c_estadistico loop
update esta_articulo
set prom= v_estadistica.promedio,
sumatoria=v_estadistica.sumatoria
where codtip=v_estadistica.codtipo;
if sql%notfound then
insert into esta_articulo values(v_estadistica.codtipo,v_estadistica.promedio,
v_estadistica.sumatoria);
end if;
end loop;
end;
/
3. En este ejercicio trabajamos con los disparadores de sustitucion que trabajan
solamente con vistas y la instruccion instead of:
create view v_cliente as
select codcli,nomcliefrom cliente;
set serveroutput on;
create or replace trigger v_cliente
instead of delete or insert or update on v_cliente
for each row
begin
if deleting then
delete from cliente
where codcli=:old.codcli;
dbms_output.put_line('se borro el registro');
elsif inserting then
dbms_output.put_line('se inserto un registro');
else
dbms_output.put_line('se actualizo un registro');
end if;
end;
/
PROCEDIMIENTO ALMACENADO
Un procedimiento almacenado (stored procedure en inglés) es un programa (o
procedimiento) el cual es almacenado físicamente en una base de datos. Su implementación
varía de un gestor de bases de datos a otro. La ventaja de un procedimiento almacenado es
que al ser ejecutado, en respuesta a una petición de usuario, es ejecutado directamente en el
motor de bases de datos, el cual usualmente corre en un servidor separado. Como tal, posee
acceso directo a los datos que necesita manipular y sólo necesita enviar sus resultados de
regreso al usuario, deshaciéndose de la sobrecarga resultante de comunicar grandes
cantidades de datos salientes y entrantes.
Los procedimientos pueden ser ventajosos: Cuando una base de datos es manipulada desde
muchos programas externos. Al incluir la lógica de la aplicación en la base de datos
utilizando procedimientos almacenados, la necesidad de embeber la misma lógica en todos
los programas que acceden a los datos es reducida. Esto puede simplificar la creación y,
particularmente, el mantenimiento de los programas involucrados
Descargar