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
Borgata Hotel Casino & Spa - Mapyro
ResponderEliminarFind MGM 익산 출장마사지 Grand 속초 출장샵 Hotel Casino & Spa, 안동 출장마사지 Atlantic City on Mapyro. Borgata 제천 출장안마 Hotel Casino & Spa 동두천 출장마사지 in Atlantic City offers an unparalleled travel experience.