domingo, 3 de junio de 2018

Triggers - Activadores





CARRERA PROFESIONAL DE  : Ingeniería de Sistemas y Telemática

ASIGNATURA                                : Base de datos III

ESTUDIANTE                                :
ü  CHUQUIZUTA RAMOS, Marleni
ü  HERRERA SILVA, Carlos Jhonatan
CICLO                                              : VIII

GRUPO                                            : A

      I.        Tema: Trigger - Activadores

1.    Contenido

ü  Definición
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. Los triggers pueden prevenir errores en los datos, modificar valores de una vista, sincronizar tablas, entre otros.

ü  Sintaxis
CREATE TRIGGER [ schema_name . ]trigger_name
ON { table | view }
[ WITH <dml_trigger_option> [ ,...n ] ]
{ FOR | AFTER | INSTEAD OF }
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > }

Argumentos

schema_name
Es el nombre del esquema al que pertenece un desencadenador DML. Los desencadenadores DML tienen como ámbito el esquema de la tabla o la vista donde se crean. schema_name no se puede especificar para los desencadenadores DDL o LOGON.

trigger_name
Es el nombre del desencadenador. El parámetro trigger_name debe cumplir con las reglas de los identificadores, con la excepción de que trigger_name no puede comenzar con los símbolos # o ##.

table | view
Es la tabla o vista en que se ejecuta el desencadenador DML; algunas veces se denomina tabla del desencadenador o vista del desencadenador. Especificar el nombre completo de la tabla o vista es opcional. Solo se puede hacer referencia a una vista mediante un desencadenador INSTEAD OF. No es posible definir desencadenadores DML en tablas temporales locales o globales.

DATABASE
Aplica el ámbito de un desencadenador DDL a la base de datos actual. Si se especifica, el desencadenador se activa cada vez que event_typeo event_group tienen lugar en la base de datos actual.

ü  Administración de Activadores
·         Creación
Una declaración CREATE TABLE está formada por las palabras clave CREATE TABLE, seguidas del nombre de la nueva tabla y (entre paréntesis) una lista de definiciones y restricciones de columnas. El nombre de la tabla puede ser un identificador o una cadena.
CREATE OR REPLACE TRIGGER TR_PRODUCTOS AFTER
INSERT ON PRODUCTOS FOR EACH ROWDECLARE -- local variables
BEGIN
INSERT INTO PRODUCTOS (CODPRODUCTO, DESCRIPCION, PRECIO, ACTUALIZACION) VALUES (‘P001’,’GALLETA CASINO’,0.7, SYSDATE)
END



·         Modificación
El comando de actualización cambia los registros existentes en una tabla. El comando consta de una palabra clave UPDATE seguida del nombre de la tabla en la que se desean actualizar los registros.
ALTER OR REPLACE TRIGGER TR_PRODUCTOS AFTER INSERT ON PRODUCTOS
FOR EACH
ROWDECLARE -- local variables
BEGIN
INSERT INTO PRODUCTOS (CODPRODUCTO, DESCRIPCION, PRECIO, ACTUALIZACION) VALUES (‘P001’,’GALLETA CASINO’,0.7, SYSDATE); END

·         Eliminación
El comando DELETE se utiliza para eliminar registros de una tabla. El comando está formado por las palabras clave DELETE FROM seguidas del nombre de la tabla de la que se eliminarán los registros.
DROP TRIGGER TR_PRODUCTOS

ü  Ejemplos
Un sencillo ejemplo (para SQL Server) sería crear un Trigger para insertar un pedido de algún producto cuando la cantidad de éste, en nuestro almacén, sea inferior a un valor dado.

CREATE TRIGGER TR_ARTICULO
     ON ARTICULOS
     AFTER UPDATE
          AS
               BEGIN
                     INSERT INTO HCO_ARTICULO
                     (IDARTICULO, STOCK, FECHA)
                     SELECT ID_ARTICULO, STOCK, GETDATE()
                     FROM INSERTED
               END
              
INSERT INTO ARTICULOS VALUES (1, 'MEMORIA', 12, '12/03/2014')
SELECT * FROM ARTICULOS
UPDATE ARTICULOS
SET STOCK = STOCK - 20
WHERE ID_ARTICULO = 1

SELECT * FROM HCO_ARTICULO
2.    Resumen

Triggers – Activadores
Los Trigger o Disparadores son objetos que se asocian con tablas y se almacenan en la base de datos. Además, son las operaciones de inserción (INSERT), borrado (DELETE) o actualización (UPDATE), ya que modifican los datos de una tabla.

Sintaxys
CREATE TRIGGER [ schema_name . ]trigger_name
ON { table | view }
[ WITH <dml_trigger_option> [ ,...n ] ]
{ FOR | AFTER | INSTEAD OF }
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > }

Administración de Activadores

Creación
CREATE OR REPLACE TRIGGER TR_PRODUCTOS AFTER
INSERT ON PRODUCTOS FOR EACH ROWDECLARE -- local variables
BEGIN
INSERT INTO PRODUCTOS (CODPRODUCTO, DESCRIPCION, PRECIO,  ACTUALIZACION) VALUES (‘P001’,’GALLETA CASINO’,0.7, SYSDATE)
END

Modificación
ALTER OR REPLACE TRIGGER TR_PRODUCTOS AFTER INSERT ON PRODUCTOS
FOR EACH
ROWDECLARE -- local variables
BEGIN
INSERT INTO PRODUCTOS (CODPRODUCTO, DESCRIPCION, PRECIO, ACTUALIZACION) VALUES (‘P001’,’GALLETA CASINO’,0.7, SYSDATE); 
END

Eliminación
DROP TRIGGER TR_PRODUCTOS

3.    Summary

Triggers - Activators
Triggers or Triggers are objects that are associated with tables and stored in the database. In addition, they are the operations of insertion (INSERT), deletion (DELETE) or update (UPDATE), since they modify the data of a table.

Sintaxys
CREATE TRIGGER [schema_name. ] trigger_name
ON {table | view}
[WITH <dml_trigger_option> [, ... n]]
{FOR | AFTER | INSTEAD OF}
{[INSERT] [,] [UPDATE] [,] [DELETE]}
[WITH APPEND]
[NOT FOR REPLICATION]
AS {sql_statement [; ] [, ... n] | EXTERNAL NAME <method specifier [; ]>}

Activator Administration

Creation
CREATE OR REPLACE TRIGGER TR_PRODUCTS AFTER
INSERT ON PRODUCTS FOR EACH ROWDECLARE - local variables
BEGIN
INSERT INTO PRODUCTS (CODRODUCT, DESCRIPTION, PRICE, UPDATE) VALUES ('P001', 'GALLETA CASINO', 0.7, SYSDATE)
END

Modification
ALTER OR REPLACE TRIGGER TR_PRODUCTS AFTER INSERT ON PRODUCTS
FOR EACH
ROWDECLARE - local variables
BEGIN
INSERT INTO PRODUCTS (CODRODUCT, DESCRIPTION, PRICE, UPDATE) VALUES ('P001', 'GALLETA CASINO', 0.7, SYSDATE);
END

Elimination
DROP TRIGGER TR_PRODUCTS

4.    Recomendaciones

ü  No aceptan parámetros o argumentos (pero podrían almacenar los datos afectados en tablas temporales) No pueden ejecutar las operaciones COMMIT o ROLLBACK porque 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
ü  Estudiar bien la sintaxis de un trigger para no confundirnos ya que en la práctica es un procedimiento almacenado, pero de uso interno al DBMS, por lo cual no usa parámetros.
ü  Investigar más a fondo el tema de triggers para obtener un conocimiento más amplio y captar de mejor manera la información

5.    Conclusiones

ü  Los triggers son importantes utilizar en una base de datos para que nos ayuden a calcular ya sea el stock de un producto, etc. También para que nos ayude a hacer restricciones de datos entre otros.
ü  Los triggers también te ayudan a replicar los datos que insertas en una tabla, actualizarlos, etc. Esto nos ayudará a verificar quién fue el usuario que manipulo o actualizó los datos de una tabla, en otras palabras, sirve de espía.

6.    Apreciación del Equipo

ü  Un tipo especial de procedimiento almacenado es el trigger. Consiste en un, desencadenador o disparador, lo que hace referencia a la particularidad de estos procedimientos almacenados de ejecutarse de manera automática disparados cuando se produce una cierta condición o situación especial en los datos que componen la base de datos.
ü  En relación a la creación de los triggers, las herramientas disponibles son las mismas que en el caso de los procedimientos almacenados, si bien deberán utilizarse las opciones correspondientes. La instrucción que permite la creación de un trigger es CREATE TRIGGER

7.    Glosario de Términos

ü  Regla de Negocio: es cualquier restricción, requerimiento, necesidad o actividad especial que debe ser verificada al momento de intentar agregar, borrar o actualizar la información de una base de datos.
ü  Parámetros: Elemento o dato importante desde el que se examina un tema, cuestión o asunto.
ü  Comando: es una instrucción u orden que el usuario proporciona a un sistema informático, desde la línea de comandos (como una shell) o desde una llamada de programación. Puede ser interno (contenido en el propio intérprete) o externo (contenido en un archivo ejecutable).
ü  Desencadenador: (o Trigger) es una clase especial de procedimiento almacenado que se ejecuta automáticamente cuando se produce un evento en el servidor de bases de datos.
ü Sincronizar: Hacer que dos o más hechos, fenómenos, movimientos, mecanismos, etc., sean sincrónicos, estén en perfecta correspondencia temporal.
8.    Bibliografía o Linkografía
9.    Slideshare