domingo, 20 de mayo de 2018

ACTIVADORES


UNIVERSIDAD POLITECNICA AMAZONICA




INGENIERÍA DE SISTEMAS Y TELEMÁTICAS


                       Docente         : Marco Aurelio Porro Chulli

                       Asignatura     :BASE DE DATOS II.

                       Ciclo               : VIII  "A"

                       Integrantes     : Yanina Bustamante Jibaja.

                                                  Yenny Isabel Cuello Morón.




                                                           TRIGGER - ACTIVADORES


1.   Contenido

Ø Definición
Es una clase especial de procedimiento almacenado que se ejecuta automáticamente cuando se produce un evento en el servidor de bases de datos.
Los eventos que hacen que se ejecute un trigger son las operaciones de inserción (INSERT), borrado (DELETE) o actualización (UPDATE), ya que modifica los datos de una tabla.

Los triggers pueden:

Ø  Declarar variables locales
Ø  Invocar procedimientos almacenados

 Los triggers no pueden:

Ø  Llamarse directamente
Ø  Usar parámetros
Ø  Definirse sobre tablas temporales o vistas
Ø  Crear objetos permanentes de base de datos

Las operaciones con registro mínimo (como select into)
no disparan los triggers


CREATE [ OR ALTER ] 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 [ ; ] > } 
             <dml_trigger_option> ::= 
    [ ENCRYPTION ] 
    [ EXECUTE AS Clause ] 
<method_specifier> ::= 
    assembly_name.class_name.method_name 

Administración de Activadores (Creación, Modificación y Eliminación)

Creación
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 [ ; ] > }

EJEMPLO:

CREATE TABLE EJ_TRIGGER (
A INT PRIMARY KEY,
B CHAR (30))
CREATE TRIGGER TR_I_EJ_TRIGGER ON EJ_TRIGGER FOR INSERT AS
IF datename(month, getdate()) = "October"
BEGIN
SELECT "En Octubre no hay inserciones"
ROLLBACK TRIGGER
END
INSERT INTO EJ_TRIGGER VALUES (2, 'Dos')
SELECT * FROM EJ_TRIGGER


Modificación

Sintaxis

CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp
  FOR EACH ROW EXECUTE PROCEDURE emp_stamp();

Eliminación
Sintaxis

drop trigger nombre_del_trigger

  Ø  EJEMPLOS

1.-Crear dos tablas

CREATE TABLE EJ_TRIGGER_2A (
A INT PRIMARY KEY,
B CHAR (30))
CREATE TABLE EJ_TRIGGER_2B (
ID NUMERIC IDENTITY PRIMARY KEY,
FECHA DATETIME,
FILAS INT)

 2-Crear un trigger que guarde la fecha y número de filas afectadas por cada delete:

CREATE TRIGGER TR_D_EJ_TRIGGER_2 ON EJ_TRIGGER_2A FOR DELETE AS
INSERT INTO EJ_TRIGGER_2B VALUES (getdate(), @@rowcount)
RETURN

2.   Resumen
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.
Un trigger es un procedimiento almacenado asociado con una tabla, el cual se ejecuta a Hacer modificaciones en cascada sobre tablas relacionadas. Un trigger se puede definir para insert, update, o delete o cualquier combinación de ellos

Ø  Deshacer cambios que violan la integridad de los datos
Ø  Forzar restricciones que son muy complejas para reglas y restricciones
Ø  Mantener datos duplicados
Ø  Mantener columnas con datos derivados
Ø  Hacer ajustes de registros automáticamente cuando se modifica un dato de esa tabla.


3.   Summary
They are objects that are associated with tables and stored in the database. Its name is derived from the behavior they present in its operation, since they are executed when an event occurs on the tables to which it is associated.
A trigger is a stored procedure associated with a table, which is executed to make modifications in cascade on related tables. A trigger can be defined for insert, update, or delete or any combination of them

Ø  Undo changes that violate the integrity of the data
Ø  Force restrictions that are very complex for rules and restrictions
Ø   Keep duplicate data
Ø   Maintain columns with derived data
Ø   Make adjustments of records automatically when a data of that table is modified.
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 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.
5.   Conclusiones
·        Puedes invertir la lógica. En lugar de eliminar una fila no válida después de que se haya insertado, escriba un activador, por ejemplo: INSTEAD OF para insertar solo si verifica que la fila sea válida.
·         Los activadores también pueden utilizarse para provocar actualizaciones en otras tablas, para transformar o generar valores automáticamente en las filas insertadas o actualizadas, o para invocar funciones que realicen tareas como la de emitir alertas.

6.   Apreciación del Equipo
·     La lógica centralizada que se imponen en todas las tablas facilita el mantenimiento, porque no se necesitan realizar cambios en los programas de aplicación cuando cambia la lógica.
· Los activadores son un mecanismo útil para definir e imponer reglas empresariales transicionales, que son reglas que incluyen diferentes estados de los datos (por ejemplo, un salario que no se puede aumentar más del 10 por ciento).

7.   Glosario de Términos
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.
BEGÍN TRAN: Marca el punto de inicio de una transacción local explícita.
AFTER: es el valor predeterminado cuando solo se especifica la palabra clave FOR. Los desencadenadores AFTER no se pueden definir en las vistas.
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_type o event_group tienen lugar en la base de datos actual.


8.   Linkografías

Link de las Diapositivas del tema


1 comentario:

  1. Borgata Hotel Casino & Spa - Mapyro
    Find MGM 익산 출장마사지 Grand 속초 출장샵 Hotel Casino & Spa, 안동 출장마사지 Atlantic City on Mapyro. Borgata 제천 출장안마 Hotel Casino & Spa 동두천 출장마사지 in Atlantic City offers an unparalleled travel experience.

    ResponderEliminar