0% found this document useful (0 votes)
33 views3 pages

Triggers and Procedures

The document defines triggers and stored procedures to audit changes made to an EMPLOYEE table. After/Instead of triggers are created for INSERT, UPDATE, and DELETE operations to log changes to an EMPLOYEE_AUDIT table. A stored procedure is also created to insert new records to both the EMPLOYEE and EMPLOYEE_AUDIT tables.

Uploaded by

Srinivas Neelam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
33 views3 pages

Triggers and Procedures

The document defines triggers and stored procedures to audit changes made to an EMPLOYEE table. After/Instead of triggers are created for INSERT, UPDATE, and DELETE operations to log changes to an EMPLOYEE_AUDIT table. A stored procedure is also created to insert new records to both the EMPLOYEE and EMPLOYEE_AUDIT tables.

Uploaded by

Srinivas Neelam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

--CREATE TABLE EMPLOYEE(ID INT,NAME VARCHAR(100),JOBTITLE VARCHAR(100))

--INSERT INTO EMPLOYEE(ID,NAME,JOBTITLE)


--SELECT BusinessEntityID,(FirstName+' '+ISNULL(MiddleName,' ')+' '+ISNULL(LastName,''))
AS FullNAME
-- ,JobTitle FROM AdventureWorks2012.HumanResources.vEmployee

--CREATE TABLE EMPLOYEE_AUDIT(ID INT,NAME VARCHAR(100),JOBTITLE VARCHAR(100)


-- ,Audit_ActioN VARCHAR(50),Audit_Time DATETIME DEFAULT GETDATE())

SELECT * FROM EMPLOYEE


SELECT * FROM EMPLOYEE_AUDIT

ALTER TRIGGER trgAftrInsrt ON EMPLOYEE


FOR INSERT
AS
BEGIN
DECLARE @ID INT
DECLARE @NAME VARCHAR(100)
DECLARE @JT VARCHAR(100)
DECLARE @AA VARCHAR(50)

SELECT @ID=ID FROM inserted;


SELECT @NAME=NAME FROM inserted;
SELECT @JT=JOBTITLE FROM inserted;
SET @AA=' After Insert Trigger';

SET NOCOUNT ON
INSERT INTO EMPLOYEE_AUDIT(ID,NAME,JOBTITLE,Audit_ActioN)
VALUES(@ID,@NAME,@JT,@AA)

RAISERROR( 'AFTER TRIGGER IS FIRED',16,1)


END

SET NOCOUNT ON
INSERT INTO EMPLOYEE VALUES(301,'JANU','FINANCE')

CREATE TRIGGER trgAftrUpdate ON EMPLOYEE


FOR UPDATE
AS
BEGIN
DECLARE @ID INT
DECLARE @NAME VARCHAR(100)
DECLARE @JT VARCHAR(100)
DECLARE @AA VARCHAR(50)

SELECT @ID=ID FROM inserted;


SELECT @NAME=NAME FROM inserted;
SELECT @JT=JOBTITLE FROM inserted;

IF UPDATE(NAME)
SET @AA='Name is Updated -- After Update Trigger';
IF UPDATE(JOBTITLE)
SET @AA='JOBTITLE is Updated -- After Update Trigger';

SET NOCOUNT ON
INSERT INTO EMPLOYEE_AUDIT(ID,NAME,JOBTITLE,Audit_ActioN)
VALUES(@ID,@NAME,@JT,@AA)

RAISERROR( 'AFTER UPDATE TRIGGER IS FIRED',16,1)


END

UPDATE EMPLOYEE SET JOBTITLE='Design Engineer' WHERE ID=300

CREATE TRIGGER trgAftrDelt ON EMPLOYEE


FOR DELETE
AS
BEGIN
DECLARE @ID INT
DECLARE @NAME VARCHAR(100)
DECLARE @JT VARCHAR(100)
DECLARE @AA VARCHAR(50)

SELECT @ID=ID FROM deleted;


SELECT @NAME=NAME FROM deleted;
SELECT @JT=JOBTITLE FROM deleted;
SET @AA=' After delete Trigger';

SET NOCOUNT ON
INSERT INTO EMPLOYEE_AUDIT(ID,NAME,JOBTITLE,Audit_ActioN)
VALUES(@ID,@NAME,@JT,@AA)

RAISERROR( 'AFTER DELETE TRIGGER IS FIRED',16,1)


END

DELETE FROM EMPLOYEE WHERE ID=301


SELECT * FROM EMPLOYEE
SELECT * FROM EMPLOYEE_AUDIT

ALTER TRIGGER trgInstInsrt ON EMPLOYEE


INSTEAD OF INSERT
AS
BEGIN
DECLARE @ID INT
DECLARE @NAME VARCHAR(100)
DECLARE @JT VARCHAR(100)

SELECT @ID=ID FROM inserted;


SELECT @NAME=NAME FROM inserted;
SELECT @JT=JOBTITLE FROM inserted;

RAISERROR( 'INSTEAD OF INSERT TRIGGER IS FIRED',16,1)


END

SET NOCOUNT ON
INSERT INTO EMPLOYEE VALUES(301,'JANU','FINANCE')

CREATE TRIGGER trgInstUpdt ON EMPLOYEE


INSTEAD OF UPDATE
AS
BEGIN
DECLARE @ID INT
DECLARE @NAME VARCHAR(100)
DECLARE @JT VARCHAR(100)

SELECT @ID=ID FROM inserted;


SELECT @NAME=NAME FROM inserted;
SELECT @JT=JOBTITLE FROM inserted;

RAISERROR( 'INSTEAD OF UPDATE TRIGGER IS FIRED',16,1)


END

SELECT * FROM EMPLOYEE


SELECT * FROM EMPLOYEE_AUDIT

UPDATE EMPLOYEE SET JOBTITLE='HR' WHERE ID=300

CREATE PROCEDURE uspInst(@ID INT,@NAME VARCHAR(100),@JT VARCHAR(100),@AA VARCHAR(50))


AS
BEGIN

SET NOCOUNT ON
INSERT INTO EMPLOYEE_AUDIT(ID,NAME,JOBTITLE,Audit_ActioN)
VALUES(@ID,@NAME,@JT,@AA)

PRINT ' NEW RECORD IS INSERTED'


END

CREATE PROCEDURE uspAudit(@ID1 INT,@NAME1 VARCHAR(100),@JT1 VARCHAR(100))


AS
BEGIN

EXECUTE uspInst @ID=@ID1,@NAME=@NAME1,@JT=@JT1,@AA='INSERT'

SET NOCOUNT ON
INSERT INTO EMPLOYEE(ID,NAME,JOBTITLE) VALUES(@ID1,@NAME1,@JT1)

END

EXEC uspAudit 301,'ABHI','FINANCE'

You might also like