EQUIPO : Investigation Systems
Estudiantes : Aguilar Rafael Jaime
Diaz Guerrero Imer Hobet
CURSO :
Base de Datos II
TEMA :
TRIGGER
DOCENTE :
Marco Aurelio Porro Chulli
---------------------------------------------------------------------------
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.
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.
Ø Sintaxis
CREATE TRIGGER <Nombre del Trigger>
ON <Nombre de la
Tabla>
AFTER <INSERT, DELETE, UPDATE>
AS
BEGIN
-- Inserta aquí las instrucciones
END
Ø
Administración de Procedimientos Almacenados
(Creación, Modificación y Eliminación)
Creación De Activadores
CREATE TRIGGER
tr_InsertaVideoFormato
ON TbVideo
FOR Insert
AS
DECLARE @idfor Char(3)
SELECT @idfor=idformato FROM Inserted
UPDATE TbFormato
SET cantvideo=cantvideo+1
WHERE idformato=@idfor
Go
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.
ALL SERVER
Aplica el ámbito de un
desencadenador DDL o logon al servidor actual. Si se especifica, el
desencadenador se activa cada vez queevent_type o event_group tienen lugar en
el servidor actual.
WITH ENCRYPTION
Ofusca el texto de la
instrucción CREATE TRIGGER. El uso de WITH ENCRYPTION impide que el desencadenador
se publique como parte de la replicación de SQL Server. WITH ENCRYPTION no se
puede especificar para desencadenadores CLR.
EXECUTE AS
Especifica el contexto de
seguridad en el que se ejecuta el desencadenador. Permite controlar qué cuenta
de usuario utiliza la instancia de SQL Server para validar los permisos sobre
cualquier objeto de base de datos al que haga referencia el desencadenador.
Para obtener más
información, vea EXECUTE AS (cláusula de Transact-SQL).
FOR | AFTER
AFTER especifica que el desencadenador
DML solo se activa cuando todas las operaciones especificadas en la instrucción
SQL desencadenadora se han ejecutado correctamente. Además, todas las acciones
referenciales en cascada y las comprobaciones de restricciones deben ser
correctas para que este desencadenador se ejecute.
AFTER es el valor
predeterminado cuando solo se especifica la palabra clave FOR.
Los desencadenadores AFTER
no se pueden definir en las vistas.
INSTEAD OF
Especifica que se ejecuta el
desencadenador DML en vez de la instrucción SQL desencadenadora, por lo que se
suplantan las acciones de las instrucciones desencadenadoras. INSTEAD OF no se
puede especificar para los desencadenadores DDL o logon.
Como máximo, se puede
definir un desencadenador INSTEAD OF por cada instrucción INSERT, UPDATE o
DELETE en cada tabla o vista. No obstante, en las vistas es posible definir
otras vistas que tengan su propio desencadenador INSTEAD OF.
Los desencadenadores INSTEAD
OF no se permiten en vistas actualizables que usan WITH CHECK OPTION. SQL
Server genera un error cuando se agrega un desencadenador INSTEAD OF a una
vista actualizable para la que se especificó WITH CHECK OPTION. El usuario debe
quitar esta opción mediante ALTER VIEW antes de definir el desencadenador
INSTEAD OF.
{ [ DELETE ] [ , ] [ INSERT
] [ , ] [ UPDATE ] }
Especifica las instrucciones
de modificación de datos que activan el desencadenador DML cuando se intenta en
esta tabla o vista. Se debe especificar al menos una opción. En la definición
del desencadenador se permite cualquier combinación de estas opciones, en
cualquier orden.
Para los desencadenadores INSTEAD OF, no se
permite la opción DELETE en tablas que tengan una relación de integridad
referencial que especifica una acción ON DELETE en cascada. Tampoco se permite
la opción UPDATE en tablas que tengan una relación referencial que especifique
una acción ON UPDATE en cascada.
Modificación
CREATE TRIGGER tr_Actualiza_Producto
On TbProducto
INSTEAD OF UPDATE
AS
DECLARE @CODPRO CHAR(4)
SELECT @CODPRO=CodProducto FROM inserted
DECLARE @PRECIOUNI DECIMAL(9,2)
SELECT @PRECIOUNI=PrecioUnitario FROM INSERTED
UPDATE TbProducto SET PrecioUnitario=(@PRECIOUNI+PrecioUnitario)/2
WHERE CodProducto=@CODPRO
PRINT 'Registro
Actualizado'
RETURN
go
Eliminación
CREATE TRIGGER tr_EliminaVideoFormato
ON TbVideo
FOR Delete
AS
DECLARE @idfor Char(3)
SELECT @idfor=idformato FROM Deleted
UPDATE TbFormato
SET cantvideo=cantvideo-1
WHERE idformato=@idfor
Go
Ø Ejemplos
--Tabla TbVideo – Formato
--Cuando se inserta
un registro en la Tabla TbVideo se incrementa en 1 en campo cantvideo de la
tabla TbFormato
CREATE TRIGGER tr_InsertaVideoFormato
ON TbVideo
FOR Insert
AS
DECLARE @idfor Char(3)
SELECT @idfor=idformato FROM Inserted
UPDATE TbFormato
SET cantvideo=cantvideo+1
WHERE idformato=@idfor
Go
--Cuando se elimina
un registro en la Tabla TbVideo se disminuye en 1 en campo cantvideo de la
tabla TbFormato
CREATE TRIGGER tr_EliminaVideoFormato
ON TbVideo
FOR Delete
AS
DECLARE @idfor Char(3)
SELECT @idfor=idformato FROM Deleted
UPDATE TbFormato
SET cantvideo=cantvideo-1
WHERE idformato=@idfor
Go
--CREAR UN ACTIVADOR QUE CONTROLE LA
ELIMNACION DE UNA TABLA EN LA BDVIDEO
CREATE TRIGGER tr_seguridad_Datos
ON DATABASE
FOR DROP_TABLE,ALTER_TABLE
AS
BEGIN
RAISERROR('No se tiene permiso para eliminar tablas',16,1)
ROLLBACK TRANSACTION
END
--Cuando se elimina un registro en la
Tabla TbVideo se disminuye en 1 en campo cantvideo de la tabla TbFormato
CREATE TRIGGER tr_EliminaVideoFormato
ON TbVideo
FOR Delete
AS
DECLARE @idfor Char(3)
SELECT @idfor=idformato FROM Deleted
UPDATE TbFormato
SET cantvideo=cantvideo-1
WHERE idformato=@idfor
Go
2.
Resumen
Los triggers o disparadores son objetos de la base de datos
que ejecutan acciones cuando se producen ciertos eventos (tanto DML como DDL)
(inserciones (INSERT), modificaciones (UPDATE), borrados (DELETE), creación de
tablas (CREATE TABLE, etc).
3.
Summary
Triggers
are triggers of the database that execute actions when certain events occur
(both DML and DDL) (inserts (INSERT), modifications (UPDATE), deletions
(DELETE), creation of tables (CREATE TABLE, etc).
4.
Recomendaciones
Ø En una BD es muy importante implementar los activadores son un tipo especial de procedimiento almacenado que se ejecuta
automáticamente cuando se produce un evento en el servidor de bases de
datos. Los desencadenadores DML se ejecutan cuando un usuario intenta
modificar datos mediante un evento de lenguaje de manipulación de datos
(DML). Los eventos DML son instrucciones INSERT, UPDATE o DELETE de una
tabla o vista.
Ø Para seguridad los activadores se activan cuando se
desencadena cualquier evento válido, con independencia de que las filas de la
tabla se vean o no afectadas.
Ø Aparte del uso en DML también los desencadenadores o
activadores, hacen uso en DDL, estos se ejecutan como respuesta a diversos
eventos del lenguaje de definición de datos (DDL). Estos eventos
corresponden principalmente a instrucciones CREATE, ALTER y DROP
de Transact-SQL, y a determinados procedimientos almacenados del sistema
que ejecutan operaciones de tipo DDL.
5.
Conclusiones
Ø Un
Disparador nunca se llama directamente, en cambio, cuando una aplicación o
usuario intenta insertar, actualizar, o anular una fila en una tabla, la acción
definida en el disparador se ejecuta automáticamente (se dispara).
Ø La
entrada en vigor automática de restricciones de los datos, hace que los
usuarios entren sólo valores válidos.
Ø El
mantenimiento de la aplicación se reduce, los cambios a un disparador se
refleja automáticamente en todas las aplicaciones que tienen que ver con la
tabla sin la necesidad de recompilar o enlazar.
6.
Apreciación
del Equipo
Ø Cuando
ciertas reglas de negocio son muy elaboradoras y necesitan ser expresadas a
nivel base de datos, es necesario que además de reglas y restricciones se
utilicen triggers.
Ø Los
triggers pueden controlar ciertas acciones, por ejemplo: pueden rechazar o
modificar ciertos valores que no cumplan determinadas reglas para prevenir que
datos inválidos sean insertados en la base.
Ø Con
los Triggers implementamos varios casos de uso que mantengan la integridad de
la tabla de la base de datos, como Validar información, Calcular atributos
derivados, Seguimiento de movimientos de datos en tablas de la base de datos,
etc.
7.
Glosario
de Términos
ü TRIGGER: Un
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. SQL Server permite crear varios desencadenadores
para una instrucción específica.
ü
ALTER TABLE: Modifica una definición de tabla
mediante la alteración, adición o eliminación de columnas y restricciones, la
reasignación y reconstrucción de particiones o la desactivación o habilitación
de restricciones y desencadenadores.
ü CREATE TABLE: La
instrucción CREATE TABLE se usa para crear una nueva tabla en una base de
datos.
ü DELETE: Palabra clave
opcional que puede utilizarse entre la palabra clave DELETE y el table_name de destino.
El nombre de la tabla cuyas filas se van a eliminar. Especifica las condiciones
utilizadas para limitar el número de filas que se van a eliminar.
ü ORDER BY: Permite clasificar los resultados de la consulta arrojados
por la especificación de la consulta.
ü WITH ENCRYPTION
Ofusca el texto de la
instrucción CREATE TRIGGER. El uso de WITH ENCRYPTION impide que el
desencadenador se publique como parte de la replicación de SQL Server. WITH
ENCRYPTION no se puede especificar para desencadenadores CLR.
ü EXECUTE AS
Especifica el contexto de
seguridad en el que se ejecuta el desencadenador. Permite controlar qué cuenta
de usuario utiliza la instancia de SQL Server para validar los permisos sobre
cualquier objeto de base de datos al que haga referencia el desencadenador.
ü AFTER: Especifica que el desencadenador DML solo se activa cuando
todas las operaciones especificadas en la instrucción SQL desencadenadora se
han ejecutado correctamente. Además, todas las acciones referenciales en
cascada y las comprobaciones de restricciones deben ser correctas para que este
desencadenador se ejecute.
ü
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.
ü
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 ##.
8.
Bibliografía
o Linkografía
LINK DE DIAPOSITIVAS



No hay comentarios :
Publicar un comentario