Sunteți pe pagina 1din 11

TEMA: Trigger - Activador

Escuela Profesional De Ingeniería De Sistema Y Telemática

INTEGRANTES:

ALTAMIRANO GUEVARA, Yoseily

HERRERA CIEZA, Erlin Darwin

DOCENTE: PORRO CHULLI, Marco Aurelio

I. Tema: Trigger - Activador


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. Una
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. 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 [ ; ] > }

 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 logo
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 específica 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 logo.
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.

 Administración de Activadores(Creación, Modificación y


Eliminación)

Creación:

-- Este trigger evita que se inserte una fila en la


tabla tbOrdenVentas
-- cuando el crédito del cliente es inferior a 10.000

CREATE TRIGGER tr_Credito


ON dbo.TrCreditoBajo, dbo.tbOrdenVentas
AFTER INSERT
AS
IF EXISTS (SELECT *
FROM dbo.tbOrdenVentas AS o
JOIN tbVentas_aceptadas AS v
ON o.IdOrdenVenta = v.IdOrdenVenta
JOIN model.tbClientes AS c
ON c.IdCliente = o.idCliente
WHERE c.Credito_Cliente < 10000)
BEGIN
RAISERROR ('El credito del cliente es inferior a
10.000, venta no aceptada.',16, 1);
ROLLBACK TRANSACTION;
RETURN
END;
GO

Modificación:

ALTER TRIGGER tr_Credito


ON dbo.TrCreditoBajo, dbo.tbOrdenVentas
AFTER INSERT
AS
IF EXISTS (SELECT *
FROM dbo.tbOrdenVentas AS o
JOIN tbVentas_aceptadas AS v
ON o.IdOrdenVenta = v.IdOrdenVenta
JOIN model.tbClientes AS c
ON c.IdCliente = o.idCliente
WHERE c.Credito_Cliente < 10000)
BEGIN
RAISERROR ('El credito del cliente es inferior, venta
no aceptada.',16, 1);
ROLLBACK TRANSACTION;
RETURN
END;
GO

Eliminación:

DROP TRIGGER tr_Credito

 Ejemplos

01. Crear un activador que permita actualizar el precio de un


producto
CREATE TRIGGER tr_Actualizar_Producto
ON TbProducto
INSTEAD OF UPDATE
AS
DECLARE @cod_pro CHAR(4) SELECT @cod_pro=codproducto
from inserted --inserted, para definir proseso se ba uzar

DECLARE @pre_pro Decimal(9,2)


SELECT @pre_pro=PrecioUnitario from inserted
UPDATE TbProducto SET
PrecioUnitario=(PrecioUnitario+@pre_pro)/2
WHERE CodProducto=@cod_pro
PRINT 'PRECIO PROMEDIO ACTUALIZADO'
GO

02. Se pide crear los disparadores que permitan actualizar los


campos cantvideo de la tabla TbFormato , este activador deben
incrementar o disminuir sus valores en 1 siempre y cuando suceda
una inserción o eliminación de registro en la tabla TbVideo.

--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

2. Resumen
 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.

 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 [ ; ] > }

 Ejemplos

01. Crear un activador que permita actualizar el precio de un


producto
CREATE TRIGGER tr_Actualizar_Producto
ON TbProducto
INSTEAD OF UPDATE
AS
DECLARE @cod_pro CHAR(4)
SELECT @cod_pro=codproducto from inserted
DECLARE @pre_pro Decimal(9,2)
SELECT @pre_pro=PrecioUnitario from inserted --inserted, para
definir proseso se ba uzar

UPDATE TbProducto SET


PrecioUnitario=(PrecioUnitario+@pre_pro)/2
WHERE CodProducto=@cod_pro
PRINT 'PRECIO PROMEDIO ACTUALIZADO'
GO
3. Summary
 Definition

Triggers or Triggers 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. The events that cause
a trigger to execute are the operations of insertion (INSERT),
deletion (DELETE) or update (UPDATE), since they modify the data
of a table.

 Syntax

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

 Example

01. Create an activator that allows you to update the price of a


product
CREATE TRIGGER tr_Actualizar_Producto
ON TbProducto
INSTEAD OF UPDATE
AS
DECLARE @cod_pro CHAR(4)
SELECT @cod_pro=codproducto from inserted
DECLARE @pre_pro Decimal(9,2)
SELECT @pre_pro=PrecioUnitario from inserted --inserted, para
definir proseso se ba uzar

UPDATE TbProducto SET


PrecioUnitario=(PrecioUnitario+@pre_pro)/2
WHERE CodProducto=@cod_pro
PRINT 'PRECIO PROMEDIO ACTUALIZADO'
GO
4. Recomendaciones

Se recomienda hacer uso de los triggers en programación ya que los


disparadores nos ofrecen un mayor control con relación a la base de
datos.

También nos aseguran que las operaciones relacionadas se realicen


juntas de forma implícita.

5. Conclusiones

En conclusión los disparadores son objetos que se asocian con tablas


y se almacenan en la base de datos.

Además podemos encontrar eventos que hacen que se ejecute un


trigger y son las siguientes operaciones de: inserción (INSERT),
borrado (DELETE) o actualización (UPDATE), ya que modifican los
datos de una tabla.

6. Apreciación del Equipo

Como equipo podemos apreciar que gracias a los triggers podemos


obtener respuestas instantáneas en nuestras aplicaciones ante
eventos auditivos.

Los disparadores nos brindan restricciones de integridad de datos y


de integridad referencial.

7. Glosario de Términos

Triggers: Son objetos que se asocian con tablas y se almacenan en


la base de datos.

Eventos: Son todas las acciones que el usuario inicia, dar clic sobre
un botón, presionar las teclas del teclado, etc.

Restricción: Es un paradigma de la programación en informática

Sincronizar: Hace referencia a la coordinación de procesos que se


ejecutan simultáneamente para completar una tarea
Desencadenadores: También conocidos como activadores o
triggers.

8. Linkografía

https://es.wikipedia.org/wiki/Trigger_(base_de_datos)

https://analisisyprogramacionoop.blogspot.pe/2016/05/triggers-
desencadenadores-sql-server.html

S-ar putea să vă placă și