You are on page 1of 2

EXP.

NO: 07

DATE: 06-01-2014

Triggers
Definition: A trigger is a pl/sql block structure which is fired when DML statements like Insert, Delete, and Update is executed on a database table A trigger is triggered automaticall! when an associated DML statement is executed Syntax of Triggers "he #!ntax for creating a trigger is$ %&'A"' ()& &'*LA%' + "&I,,'& trigger-name ./'0)&' 1 A0"'& 1 I2#"'AD )0 3 .I2#'&" ()&+ 1 U*DA"' ()&+ 1 D'L'"'3 ()0 col-name+ )2 table-name (&'0'&'2%I2, )LD A# o 2'4 A# n+ (0)& 'A%5 &)4+ 45'2 6condition7 /',I2 888 sql statements '2D9

CREATE [OR REPLACE ] TRIGGER trigger_name 8 "his clause creates a trigger with the gi:en name or o:erwrites an existing trigger with the same name {BEFORE | AFTER | INSTEAD OF } 8 "his clause indicates at what time the trigger should get fired i e for example$ before or after updating a table I2#"'AD )0 is used to create a trigger on a :iew before and after cannot be used to create a trigger on a :iew {INSERT [OR] | UPDATE [OR] | DELETE} 8 "his clause determines the triggering e:ent More than one triggering e:ents can be used together separated b! )& ke!word "he trigger gets fired at all the specified triggering e:ent [OF !"_name] 8 "his clause is used with update triggers "his clause is used when !ou want to trigger an e:ent onl! when a specific column is updated

CREATE [OR REPLACE ] TRIGGER trigger_name 8 "his clause creates a trigger with the gi:en name or o:erwrites an existing trigger with the same name [ON ta#"e_name] 8 "his clause identifies the name of the table or :iew to which the trigger is associated [REFERENCING OLD AS ! NE$ AS n] 8 "his clause is used to reference the old and new :alues of the data being changed /! default, !ou reference the :alues as $old column-name or $new column-name "he reference names can also be changed from old 6or new7 to an! other user8defined name ;ou cannot reference old :alues when inserting a record, or new :alues when deleting a record, because the! do not exist [FOR EAC% RO$] 8 "his clause is used to determine whether a trigger must fire when each row gets affected 6 i e a &ow Le:el "rigger7 or <ust once when the entire sql statement is executed6i e statement le:el "rigger7 $%EN & !n'iti!n( 8 "his clause is :alid onl! for row le:el triggers "he trigger is fired onl! for rows that satisf! the condition specified
Ty es of P!"S#! Triggers "here are two t!pes of triggers based on which le:el it is triggered 1$ %o& 'e(e' trigger 8 An e:ent is triggered for each row updated, inserted or deleted 2$ State)ent 'e(e' trigger 8 An e:ent is triggered for each #=L statement executed P!"S#! Trigger Exe*+tion ,ierar*-y "he following hierarch! is followed when a trigger is fired 1$ /'0)&' statement trigger fires first 2$ 2ext /'0)&' row le:el trigger fires, once for each row affected .$ "hen A0"'& row le:el trigger fires once for each affected row "hese e:ents will alternate between /'0)&' and A0"'& row le:el triggers 4$ 0inall! the A0"'& statement le:el trigger fires

Ai)1$ Implement a trigger to store the histor! of modified rows from a source table to a target table Ai)2: Implement triggers to gi:e the details of triggers such as t!pe of the trigger and date modified