BASE DE DATOS II

Breaking News

Comments

Social

viernes, 1 de junio de 2018

Tema: TRIGGERS







       
                     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


 VIDEOS
















No hay comentarios :

Publicar un comentario

Designed By Published... James