1. 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.
2. 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:
3. 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
4. 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
5. 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
6. 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
7. 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