Integrantes:
Altamirano Guevara Yoseily
Herrera Cieza Erlin Darwin
Docente : Marco Aurelio Porro Chulli
INGENIERÍA DE SISTEMAS Y TELEMÁTICA
ASIGNATURA: BASE DE DATOS II
Tema TRIGGER - ACTIVADOR
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.
Definición
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 [ ; ] > }
Sintaxis
Administración de Activadores (Creación,
Modificación y Eliminación)
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.IdOrdenVen
ta
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
Triggers

Triggers

  • 1.
    Integrantes: Altamirano Guevara Yoseily HerreraCieza Erlin Darwin Docente : Marco Aurelio Porro Chulli INGENIERÍA DE SISTEMAS Y TELEMÁTICA ASIGNATURA: BASE DE DATOS II Tema TRIGGER - ACTIVADOR
  • 2.
    Los Triggers oDisparadores 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. Definición
  • 3.
    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 [ ; ] > } Sintaxis
  • 4.
    Administración de Activadores(Creación, Modificación y Eliminación) 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)
  • 5.
    BEGIN RAISERROR ('El creditodel cliente es inferior a 10.000, venta no aceptada.',16, 1); ROLLBACK TRANSACTION; RETURN END; GO
  • 6.
    Modificación: ALTER TRIGGER tr_Credito ONdbo.TrCreditoBajo, dbo.tbOrdenVentas AFTER INSERT AS IF EXISTS (SELECT * FROM dbo.tbOrdenVentas AS o JOIN tbVentas_aceptadas AS v ON o.IdOrdenVenta = v.IdOrdenVen ta JOIN model.tbClientes AS c ON c.IdCliente = o.idCliente WHERE c.Credito_Cliente < 10000)
  • 7.
    BEGIN RAISERROR ('El creditodel cliente es inferior, venta no aceptada.',16, 1); ROLLBACK TRANSACTION; RETURN END; GO Eliminación: DROP TRIGGER tr_Credito
  • 8.
    Ejemplos 01. Crear unactivador que permita actualizar el precio de un producto CREATE TRIGGER tr_Actualizar_Producto ON TbProducto INSTEAD OF UPDATE AS
  • 9.
    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