UNIVERSIDAD POLITÉCNICA AMAZÓNICA
INTEGRANTES:
MARIA ROCIO VASQUEZ ESPINOZA
LUISA VEGA MONTENEGRO
DOCENTE: ING.MARCO AURELIO
PORRO CHULLÍ
INGENIERIA DE SISTEMAS Y TELEMÁTICA
CICLO: VIII-B
TRIGGER - ACTIVADORES
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.
• . 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 OR REPLACE TRIGGER traslado
AFTER UPDATE OF Loc
ON DEPART FOR EACH ROW
DECLARE
vdep number;
BEGIN
SELECT dept_no INTO vdep FROM depart;
UPDATE emple
SET SALARIO=salario+salario*20/100
WHERE vdep=dept_no;
END;
 Administración de Activadores (Creación, Modificación y
Eliminación)
Creación de Activadores
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 [ ;
] > }
Actualizar trigger
create trigger DIS_libros_actualizar
on libros
for update
as
raiserror('Los datos de la tabla
"libros" no pueden modificarse', 10,
1)
rollback transaction
Eliminar trigger
CREATE TRIGGER TR_CUSTOMER_DEL ON customer
FOR DELETE
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS (
SELECT *
FROM deleted
WHERE name = 'Peter'
)
BEGIN
ROLLBACK;
THROW 50001, 'Cannot delete Peter', 1;
END
END;
 Ejemplos
---01 crear un activador
ALTER trigger tr_actualizar_precio_producto
on tbproducto
instead of update
as
declare @cod_pro char(4)
select @cod_pro=codproducto from inserted ---
capturando el codigo que se busca
declare @pre_pro decimal(9,2)
select @pre_pro=preciounitario from inserted ---
capturando el precio que se busca
DECLARE @CANTIDAD INT
SELECT @CANTIDAD=STOCK FROM INSERTED
update tbproducto set
preciounitario=(preciounitario+@pre_pro)/2,Stock=Stoc
k+@CANTIDAD
where codproducto=@cod_pro
print 'EL PRECIO Y STOCK ESTA ACTUALIZADO'
go
UPDATE TBPRODUCTO SET PRECIOUNITARIO=125.00,Stock=40
WHERE CodProducto='204'---PARA ACTUALIZAR PRECIO DEL
PRODUCTO
SELECT * FROM TbProducto WHERE CodProducto='204'----
PARA COMPROBRAR
CREAR UN DISPARADOR PARA ELIMINAR TABLAS
CREATE TRIGGER tr_Gestionar_Eliminacion_Tablas
ON DATABASE
FOR DROP_TABLE,ALTER_TABLE
AS
BEGIN
RAISERROR ('NO TIENE AUTORIZACIÓN PARA ELIMINAR
O MODIFICAR TABLAS',16,1)
ROLLBACK TRANSACTION--deshacer la transsacion
END
--COMPROBACION---------------------------------------
---------------------
CREATE TABLE Prueba (id INT IDENTITY (1,1) PRIMARY
KEY,
nombre VARCHAR (80)NOT NULL)
GO

Trigger activadores

  • 1.
    UNIVERSIDAD POLITÉCNICA AMAZÓNICA INTEGRANTES: MARIAROCIO VASQUEZ ESPINOZA LUISA VEGA MONTENEGRO DOCENTE: ING.MARCO AURELIO PORRO CHULLÍ INGENIERIA DE SISTEMAS Y TELEMÁTICA CICLO: VIII-B
  • 2.
  • 3.
    DEFINICIÓN • Es unaclase 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.
  • 4.
    • . Loseventos 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.
  • 5.
    SINTAXIS CREATE OR REPLACETRIGGER traslado AFTER UPDATE OF Loc ON DEPART FOR EACH ROW DECLARE vdep number; BEGIN SELECT dept_no INTO vdep FROM depart; UPDATE emple SET SALARIO=salario+salario*20/100 WHERE vdep=dept_no; END;
  • 6.
     Administración deActivadores (Creación, Modificación y Eliminación) Creación de Activadores 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 [ ; ] > }
  • 7.
    Actualizar trigger create triggerDIS_libros_actualizar on libros for update as raiserror('Los datos de la tabla "libros" no pueden modificarse', 10, 1) rollback transaction
  • 8.
    Eliminar trigger CREATE TRIGGERTR_CUSTOMER_DEL ON customer FOR DELETE AS BEGIN SET NOCOUNT ON; IF EXISTS ( SELECT * FROM deleted WHERE name = 'Peter' ) BEGIN ROLLBACK; THROW 50001, 'Cannot delete Peter', 1; END END;
  • 9.
     Ejemplos ---01 crearun activador ALTER trigger tr_actualizar_precio_producto on tbproducto instead of update as declare @cod_pro char(4) select @cod_pro=codproducto from inserted --- capturando el codigo que se busca declare @pre_pro decimal(9,2) select @pre_pro=preciounitario from inserted --- capturando el precio que se busca DECLARE @CANTIDAD INT SELECT @CANTIDAD=STOCK FROM INSERTED update tbproducto set preciounitario=(preciounitario+@pre_pro)/2,Stock=Stoc k+@CANTIDAD where codproducto=@cod_pro print 'EL PRECIO Y STOCK ESTA ACTUALIZADO' go UPDATE TBPRODUCTO SET PRECIOUNITARIO=125.00,Stock=40 WHERE CodProducto='204'---PARA ACTUALIZAR PRECIO DEL PRODUCTO SELECT * FROM TbProducto WHERE CodProducto='204'---- PARA COMPROBRAR
  • 10.
    CREAR UN DISPARADORPARA ELIMINAR TABLAS CREATE TRIGGER tr_Gestionar_Eliminacion_Tablas ON DATABASE FOR DROP_TABLE,ALTER_TABLE AS BEGIN RAISERROR ('NO TIENE AUTORIZACIÓN PARA ELIMINAR O MODIFICAR TABLAS',16,1) ROLLBACK TRANSACTION--deshacer la transsacion END --COMPROBACION--------------------------------------- --------------------- CREATE TABLE Prueba (id INT IDENTITY (1,1) PRIMARY KEY, nombre VARCHAR (80)NOT NULL) GO