Una estrategia de seguridad en la nube alineada al NIST
Trigger - Activadores
1. UNIVERSAD POLITECNICA AMAZÒNICA
CURSO : BASEDATOSII
CARRERA :
Ingeniería de Sistemas y Telemática.
INTEGRANTES:
Lucy Mego Saavedra
Magaly Portocarrero Labajos
Karin Juneth Soto Horna
PROFESOR :
Marco Aurelio Porro Chulli
2. Trigger – Activadores
Trigger (Disparadores)
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 de inserción (INSERT), actualización
(UPDATE) o borrado (DELETE).
Usos
Son usados para mejorar la administración de la Base de datos, sin necesidad de contar con que
el usuario ejecute la sentencia de SQL.
Además, pueden generar valores de columnas, previene errores de datos, sincroniza tablas,
modifica valores de una vista, etc.
3. TIPOS
Existen dos tipos de disparadores que se clasifican según la cantidad de ejecuciones a
realizar:
Row Triggers (o Disparadores de fila): son aquellas que se ejecutaran n-veces si se llama
n-veces desde la tabla asociada al trigger
Statement Triggers (o Disparadores de secuencia): son áquellos que sin importar la
cantidad de veces que se cumpla con la condición, su ejecución es única.
Pueden ser de sesión y almacenados; pero no son de fiar.
4. Los Triggers o Disparadores son objetos que se asocian con tablas y se almacenan en la base
de datos. Su nombre se deriva por el comportamiento que presentan en su funcionamiento, ya
que se ejecutan cuando sucede algún evento sobre las tablas a las que se encuentra asociado.
Los eventos que hacen que se ejecute un trigger son las operaciones de inserción (INSERT),
borrado (DELETE) o actualización (UPDATE), ya que modifican los datos de una tabla.
La utilidad principal de un trigger es mejorar la administración de la base de datos, ya que no
requieren que un usuario los ejecute. Por lo tanto, son empleados para implementar las
REGLAS DE NEGOCIO (tipo especial de integridad) de una base de datos.
5. Sintaxis
Sintaxis de CREATE TRIGGER
CREATE TRIGGER nombre_disp momento_disp evento_disp
ON nombre_tabla FOR EACH ROW sentencia_disp
Un disparador es un objeto con nombre en una base de datos que se asocia con una tabla, y se activa
cuando ocurre un evento en particular para esa tabla.
El disparador queda asociado a la tabla nombre_tabla. Esta debe ser una tabla permanente, no puede
ser una tabla TEMPORARY ni una vista.
momento_disp es el momento en que el disparador entra en acción. Puede ser BEFORE (antes) o
AFTER (despues), para indicar que el disparador se ejecute antes o después que la sentencia que lo
activa.
evento_disp indica la clase de sentencia que activa al disparador. Puede ser INSERT, UPDATE, o
DELETE. Por ejemplo, un disparador BEFORE para sentencias INSERT podría utilizarse para validar los
valores a insertar.
No puede haber dos disparadores en una misma tabla que correspondan al mismo momento y sentencia.
Por ejemplo, no se pueden tener dos disparadores BEFORE UPDATE. Pero sí es posible tener los
disparadores BEFORE UPDATE y BEFORE INSERT o BEFORE UPDATE y AFTER UPDATE.
6. Disparadores en MySQL
Los disparadores son soportados en MySQL a partir de la versión 5.0.2.
Algunos de los soportes existentes son los disparadores para las
sentencias INSERT, UPDATE y DELETE
El estándar SQL:2003 requiere que los disparadores den a los programadores acceso a las variables
de un registro utilizando una sintaxis como REFERENCING NEW AS n. Por ejemplo, si un disparador
está monitoreando los cambios en la columna salario, podría escribirse un disparador como:
CREATE TRIGGER ver_salario
BEFORE UPDATE ON empleados
REFERENCING NEW ROW AS n, OLD ROW AS o
FOR EACH ROW
IF n.salario <> o.salario THEN
END IF;
7. Disparadores en PostgreSQL
Desde 1997 PostgreSQL soporta el uso de disparadores, estos pueden anexarse a las tablas
pero no a las vistas; aunque a las vistas se les pueden crear reglas.
Al igual que en MySQL los disparadores de PostgreSQL se pueden activar luego de
sentencias INSERT, UPDATE o DELETE
Cuando hay varios disparadores, se activan en orden alfabético.
Además de permitir el uso de funciones en el lenguaje nativo de PostgreSQL, PL/PgSQL, los
disparadores también permiten invocar funciones escritas en otros lenguajes como PL/Perl.
En Postgres un disparador ejecuta una función la cual contiene el código de lo que se
requiere, esto difiere del método expuesto anteriormente para MySQL que escribe el código
a ejecutarse dentro del mismo disparador.
8. Ejemplos
create trigger DIS_t_Libro_insertar on t_Libro
for insert
as
declare @descrip varchar(max)
select @descrip=Descripcion from t_Libro
join inserted
on inserted.codigolibro=t_Libro.codigo
where t_Libro.codigo=inserted.codigolibro
if (@descrip >= (select IdAutor from inserted ))
update t_Libro set Rodaje=Rodaje-inserted.codigolibro
from t_Libro
join inserted
on inserted.codigolibro=t_Libro.codigo
where codigo=t_Libro.codigolibro
else
begin
raiserror ('',10,1)
rollback transaction
end