Triggers

8

Click here to load reader

description

Instead of Triggers,DDL Triggers,DML Triggers

Transcript of Triggers

Page 1: Triggers

TRIGGERS:

1.Trigger is a program used to perform specific task when it is executed triggers are used to give

conditions or rules on the table or else on database or else on entire sqlserver

2. To overcome the drawbacks of constraints triggers are used.

3. Constraints will work on tables and will work only with insert and update command. Triggers will

work on insert, update, delete,create,alter and drop commands.

4. Stored procedure will be executed explicitly i.e. user will execute the stored procedure ..Triggers

will be executed implicitly i.e. sqlserver will execute triggers.

5. Transactions are the part of triggers

6. SQL SERVER contains after trigger, instead of triggers and DDL triggers. After trigger means after

update, after insert and after delete.(where as ORACLE database contains before triggers, after

triggers…etc.).

SYNTAX:

CREATE TRIGGER<TRIGGER_NAME>

ON[TABLE NAME/INSTEAD OF TRIGGER/DDL TRIGGER]

FOR[AFTER TRIGGER/INSTEAD OF TRIGGER/DDL TRIGGER]

AS

BEGIN

STATEMENTS

END

MAGIC TABLE:

It contains the columns of the table on which the trigger created. Magic table exists only when the

trigger is being executed. Trigger execution will take few milliseconds only for few milliseconds

magic table exist.

TYPES OF MAGICTABLES:

1. INSERTED MAGICTABLE:

The new record given in the table will be stored in inserted magic table.

2. DELETED MAGICTABLE:

The records deleted from the table will be stored in deleted magic table.

Page 2: Triggers

QUERIES:

TO MODIFY TRIGGERS IN CURRENT DATABASE

SELECT * FROM SYSOBJECTS

WHERE X TYPE=’TR’

TO VIEW STATEMENTS IN TRIGGER

SP_HELPTEXT<TRIGGER_NAME>

TO DELETE TRIGGER

DROP TRIGGER<TRIGGER_NAME>[ON DATABASE/ALL SERVER]

CREATING A TRIGGER WHICH WILL NOT ALLOWS THE USER TO DELETE THE RECORDS FROM

EMPLOYEE TABLE

CREATE TRIGGER TRG1

ON EMPLOYEE

FOR DELETE

AS

BEGIN

PRINT ’DELETION NOT ALLOWED’

ROLLBACK

END

NOTE:A table can contain 12 TRIGGER programs

CREATE A TRIGGER TO DISPLAY RECORD FROM INSERTED MAGICTABLE

CREATE TRIGGER TRG2

ON EMPLOYEE

FOR INSERT

AS

BEGIN

SELECT * FROM INSERTED

END

NOTE:

Page 3: Triggers

when insert command is executed the values will be stored in employee table

And inserted magictable and after that trigger program will execute.

CREATE A TRIGGER TO SHOW RECORDS FROM DELETED MAGIC TABLE

CREATE TRIGGER TRG3

ON EMPLOYEE

FOR DELETE

AS

BEGIN

SELECT * FROM DELETED

END

NOTE:

When delete command is executed the records will be deleted from employee table and deleted

records will be stored in deleted magic table and after that the trigger program will execute.

CREATE A TRIGGER WHICH WILL NOT ALLOW THE USER TO ADD,EDIT AND DELETE RECORDS IN

EMPLOYEE TABLE

CREATE TRIGGER TRG4

ON EMPLOYEE

AS

BEGIN

PRINT ‘RECORDS CAN BE VIEWED’

ROLLBACK

END

CREATE A TRIGGER WHICH WILL NOT ALLOW THE USER TO DELETE MULTIPLE RECORDS ON

EMPLOYEE TABLE

CREATE TRIGGER TRG5

ON EMPLOYEE

FOR DELETE

AS

IF(SELECT COUNT(*)FROM DELETED)>1

Page 4: Triggers

AS

BEGIN

PRINT ‘MULTIPLE RECORDS CANNOT BE DELETED’

ROLLBACK

END

CREATE A TRIGGER TO CHECK DUPLICATE ENO,WHILE ADDING RECORD IN EMPLOYEE TABLE

CREATE TRIGGER TRG6

ON EMPLOYEE

FOR INSERT

AS

DECLARE @ COUNT INT

DECLARE @ TENO INT

SELECT @TENO=ENO FROM INSERTED

SELECT @TCOUNT=COUNT(*) FROM EMPLOYEE WHERE ENO=@TENO

IF @TCOUNT>1

BEGIN

PRINT ‘ENO ALREADY EXISTS’

ROLLBACK

END

CREATE A TRIGGER WHICH WILL NOT ALLOW THE USER TO ADD,EDIT AND DELETE RECORDS IN

EMPLOYEE TABLE BEFORE 9’O CLOCK AND AFTER 5’O CLOCK

CREATE TRIGGER TRG8

ON EMPLOYEE

FOR INSERT,UPDATE,DELETE

AS

DECLARE@DT INT

SELECT @DT=DATEPART(HH,GETDATE())

IF @DT NOT BETWEEN 9 AND 17

Page 5: Triggers

BEGIN

PRINT ‘TRANSACTION NOT ALLOWED’

ROLLBACK

END

CREATE A TRIGGER WHICH WILL NOT ALLOW THE USER TO MODIFY EMPLOYEE NAMES IN

EMPLOYEE TABLE

CREATE TRIGGER TRG9

ON EMPLOYEE

FOR UPDATE

AS

IF UPDATE(ENAME)

BEGIN

RAISE ERROR(‘ENAME CANNOT BE MODIFIED’,16,1)

ROLLBACK

END

CREATE A TRIGGERE TO UPDATE VALUES IN ANOTHER TABLE ITEM

CREATE TRIGGER TRG10

ON ITEM

FOR INSERT

AS

BEGIN

DECLARE @TITEMNO INT

DECLARE @TQTY INT

SELECT @TITEMNO=ITEMNO,@TQTY=QTY

FROM INSERTED

UPDATE ITEMS.SET TOTAL=TOTAL+@TQTY

WHERE ITEMNO=@TITEMNO

CREATE A TRIGGER TO DISPLAY NAME FROM EMPLOYEE TABLE

Page 6: Triggers

CREATE TRIGGER TRG11

ON EMPLOYEE

FOR INSERT

AS

DECLARE @TENAME VARCHAR(15)

SELECT @TENAME=ENAME FROM INSERTED

PRINT ‘NEW NAME’:+@TENAME

INSTEAD OF TRIGGERS

With After Insert, When Insert Command Is Executed The Values Will Go To The Table At The

Values Will Go To Inserted Magic Table With Instead Of Insert, When Insert Command Is Executed.

Then Values Will Go Only To Inserted Magic Table. For The Values Will Not Go To The Table On

Which Trigger Is Created. Instead Of Triggers Can Be Used Only On Views.

CREATE A TRIGGER TO DISPLAY RECORD FROM INSERETED MAGIC TABLE

CREATE TRIGGER TRG13

ON EMPLOYEE

INSTEAD OF INSERT

AS BEGIN

DECLARE @TENO INT

DECLARE @TENAME VARCHAR(15)

DECLARE @TSAL INT

SELECT @TENO=ENO,@TENAME=ENAME FROM INSERTED

INSERT EMPLOYEE VALUES(@TENO,@TENAME,@TSAL+1000)

PRINT @TENO

PRINT @TENAME

PRINT @TSAL

END

Page 7: Triggers

DDL TRIGGERS:

IT IS USED TO CREATE TRIGGER ON DATABASE AND ON ENTIRE SQLSERVER AND THESE TRIGGERS

WILL WORKS ON CREATE,ALTER AND DROP COMMANDS

CREATE A TRIGGER WHICH WILL NOT ALLOW THE USER TO CREATE AFTER AND DROP TABLE FROM

CURRENT DATABASE

CREATE TRIGGER TRG15

ON DATABASE

FOR CREATE_TABLE,ALTER_TABLE,DROP_TABLE

AS

BEGIN

PRINT’CREATE,ALTER,DROP WILL NOT WORK’

ROLLBACK

END

TO DELETE TRIGGER

DROP TRIGGER TRG14 ON DATABASE

TO DELETE TRIGGER USING WIZARD

CLICK ON VIEW OBJECT EXPLORER

DOUBLE CLICK ON DATABASESPRACICE DATABASEPROGRAMMABILITY

DATABASE TRIGGERSRIGHT CLICK ON TRG14DELETE

CREATE A TRIGGER WHICH WILL NOT ALLOW THE USER TO CREATE,ALTER AND DROP TABLE IN

ANY DATABASE

CREATE TRIGGER TRG15

ON ALL SERVER

FOR CREATE_TABLE,ALTER_TABLE,DROP_TABLE

AS

BEGIN

PRINT ‘CREATE,ALTER.DROP WILLNOT WORK’

ROLLBACK

Page 8: Triggers

END