http://reddymsbitools.blogspot.com

Saturday, 26 February 2011

Triggers Concepts

select * from customer_test

--------------------

create table customer_test (id int identity primary key,

name varchar(100),dept varchar(100),email varchar(100))

-------------------------

create table customer_arch (pkid int identity primary key,

id int references customer_test (id),

name varchar(100),dept varchar(100),email varchar(100))

------------------

alter table customer_arch add mode varchar(10)

alter table customer_arch add description varchar(1000)

alter table customer_arch

DROP CONSTRAINT FK__customer_arc__id__53CDB2C9

-----------------------------------------

INSERT INTO customer_test

SELECT 'GAN','SALES','GAN@GMAIL.COM'



DELETE FROM CUSTOMER_TEST

UPDATE CUSTOMER_TEST SET name = name+'P'

TRUNCATE TABLE customer_arch

SELECT * FROM customer_arch

SELECT * FROM customer_test



UPDATE CUSTOMER_TEST

SET NAME = CASE WHEN NAME = 'RAMKI' THEN 'RAM' ELSE NAME END



SELECT CASE WHEN NAME = 'RAM' THEN 'RAMKI' ELSE NAME END

FROM CUSTOMER_TEST

------------------------------------



ALTER TRIGGER TRG_CUSTOMERLOG

ON customer_test

FOR UPDATE, DELETE, INSERT

AS

BEGIN

SELECT * FROM INSERTED

SELECT * FROM DELETED

IF EXISTS (SELECT 1 FROM INSERTED) AND NOT EXISTS (SELECT 1 FROM DELETED)

BEGIN

PRINT 'RECORD INSERTED'

END



ELSE IF EXISTS (SELECT 1 FROM INSERTED I JOIN DELETED D ON D.ID = I.ID

WHERE I.NAME <> D.NAME OR I.DEPT <> D.DEPT OR I.EMAIL <> D.EMAIL)

BEGIN

PRINT 'RECORD UPDATED'

INSERT INTO customer_arch SELECT D.ID,D.NAME,D.DEPT,D.EMAIL, 'UPDATED', NULL

FROM INSERTED I JOIN DELETED D ON D.ID = I.ID

WHERE I.NAME <> D.NAME OR I.DEPT <> D.DEPT OR I.EMAIL <> D.EMAIL



END



ELSE IF NOT EXISTS (SELECT 1 FROM INSERTED) AND EXISTS (SELECT 1 FROM DELETED)

BEGIN

PRINT 'RECORD DELETED'

INSERT INTO customer_arch SELECT D.ID,D.NAME,D.DEPT,D.EMAIL,'DELETED', NULL

FROM DELETED D

END

END

No comments:

Post a Comment