Está en la página 1de 2

CREATE DATABASE BD_EJEMPLO_TRIGGER

USE BD_EJEMPLO_TRIGGER
CREATE TABLE ITEMS
(ID INT PRIMARY KEY IDENTITY,
DESCRIPCION VARCHAR(30) NOT NULL,
PVP REAL CHECK(PVP>=0),
CANTIDAD INT)
CREATE TABLE PERSONA
(IDPER INT PRIMARY KEY IDENTITY,
NOMBRES VARCHAR(30) NOT NULL,
DIRECCION VARCHAR(50) NOT NULL,
TELEFONO VARCHAR(20),
RUC VARCHAR(13))
--INSERTAMOS UN NUEVO REGISTRO EN PERSONA
INSERT INTO PERSONA VALUES('NICOLE ARIAS','GYE','','0915694781')
SELECT * FROM PERSONA
--CREACION DE TRIGGER (DESENCADENADOR)----PARA PRESENTAR DATOS ANTIGUOS Y DATOS NUEVOS
--DE UNA ACTUALIZACION DE PERSONA
CREATE TRIGGER TR_ACTUALIZAR_PERSONA
ON PERSONA AFTER UPDATE
AS
SELECT * FROM deleted
SELECT * FROM inserted
--PROBAMOS MODIFICANDO DATOS
UPDATE PERSONA SET NOMBRES='NICOLE ARIAS VARGAS',
DIRECCION='GYE - CENTRO',TELEFONO='042725789',
RUC='0915694781' WHERE IDPER=1
--AUDITORIA DE REGISTROS----CREAMOS UNA TABLA DE AUDITORIA PARA LA TABLA PERSONA
CREATE TABLE AUDIT_PERSONA
(IDPER INT,NOMBRES VARCHAR(30),DIRECCION VARCHAR(50),
TELEFONO VARCHAR(20), RUC VARCHAR(13),FECHA DATE, TIPO CHAR(1),
ESTACION VARCHAR(20), USUARIO VARCHAR(20))
--CREAR EL DESENCADENADOR PARA REGISTRAR DATOS DESPUES DE UNA
--INSERCION
CREATE TRIGGER TR_INSERTAR_PERSONA ON PERSONA
AFTER INSERT
AS
DECLARE @ID INT
DECLARE @NOM VARCHAR(30)
DECLARE @DIR VARCHAR(50)
DECLARE @TEL VARCHAR(20)
DECLARE @RUC VARCHAR(13)
--OBTENGO LOS DATOS DE LA TABLA INSERTED
SELECT @ID=IDPER,@NOM=NOMBRES,@DIR=DIRECCION,@TEL=TELEFONO,
@RUC=RUC FROM INSERTED
--INSERTAMOS EL REGISTRO EN LA TABLA DE AUDITORIA
INSERT INTO AUDIT_PERSONA VALUES
(@ID,@NOM,@DIR,@TEL,@RUC,GETDATE(),'I',HOST_NAME(),SYSTEM_USER)
--PROBAMOS INSERTANDO UN NUEVO REGISTRO A PERSONAS
INSERT INTO PERSONA
VALUES('BYRON CUEVA','YAGUACHI','0998871234','1203697854')
--CONSULTAR LOS DATOS DE LA TABLA AUDITORIA DE PERSONAS
SELECT * FROM AUDIT_PERSONA
--CREAR UN TRIGGER PARA ALMACENAR LOS DATOS ANTIGUOS EN LA
--TABLA AUDITORIA DE PERSONAS, ASI MISMO LOS DATOS DE QUIEN
--LO HIZO, LA FECHA Y DESDE QUE SERVIDOR
CREATE TRIGGER TR_MODIFICAR_PERSONA ON PERSONA
AFTER UPDATE
AS

DECLARE @ID INT


DECLARE @NOM VARCHAR(30)
DECLARE @DIR VARCHAR(50)
DECLARE @TEL VARCHAR(20)
DECLARE @RUC VARCHAR(13)
--OBTENGO LOS DATOS DE LA TABLA DELETED
SELECT @ID=IDPER,@NOM=NOMBRES,@DIR=DIRECCION,@TEL=TELEFONO,
@RUC=RUC FROM DELETED
--INSERTAMOS EL REGISTRO EN LA TABLA DE AUDITORIA
INSERT INTO AUDIT_PERSONA VALUES
(@ID,@NOM,@DIR,@TEL,@RUC,GETDATE(),'M',HOST_NAME(),SYSTEM_USER)
--MODIFICAMOS UN REGISTRO DE PERSONAS
UPDATE PERSONA SET NOMBRES='BYRON CUEVAS' WHERE IDPER=4
--CONSULTAMOS LOS DATOS DE LA TABLA AUDITORIA
SELECT * FROM AUDIT_PERSONA
--CREAR EL TRIGGER CUANDO SE ELIMINE UN REGISTRO DE PERSONAS
--PARA QUE LOS DATOS SE ALMACENEN EN LA TABLA DE AUDITORIA
--CREAMOS UN TRIGGER PARA CONSULTAR LOS DATOS DESPUES DE
--ELIMINAR, INSERTAR O MODIFICAR UN REGISTRO DE PERSONA
CREATE TRIGGER TR_MANIPULACION_PERSONA ON PERSONA
AFTER INSERT,UPDATE,DELETE
AS
SELECT * FROM inserted
SELECT * FROM deleted
--PROBAMOS
--INSERT
INSERT INTO PERSONA VALUES('ODALIS RUA','DURAN','','')
--PDATE
UPDATE PERSONA SET DIRECCION='DURAN - PRIMAVERA',
TELEFONO='042728125' WHERE IDPER=5
--DELETE
DELETE FROM PERSONA WHERE IDPER=5

También podría gustarte