1. 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
2. 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
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 credito del cliente es
inferior a 10.000, venta no
aceptada.',16, 1);
ROLLBACK TRANSACTION;
RETURN
END;
GO
6. 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)
7. BEGIN
RAISERROR ('El credito del cliente
es inferior, venta no
aceptada.',16, 1);
ROLLBACK TRANSACTION;
RETURN
END;
GO
Eliminación:
DROP TRIGGER tr_Credito
8. Ejemplos
01. Crear un activador 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