Triggers
Triggers
It will not accept any parameters Types of triggers: 1. Insert trigger 2. Delete trigger 3. pdate trigger Syntax: create trigger !trigger"name# for$after% insert$update$delete as s&l statement. Insert Trigger: This trigger fires when user performs insert operation on the table. 'hen user insert a record into the table the temporary table called Inserted is created. The newly inserted record is also stored in inserted table temporarily. (reate trigger for insert as begin print )trigger t1 fire* end (reate trigger t2 on dept for as print )trigger t2 fire* (reate trigger t3 on dept for insert as print )trigger t3 fired* Insert into dept +deptno, -alues +./, trigger t1 fired trigger t2 fired trigger t3 fired (hanging the firing order of triggers0 1yntax0 sp"settrigger order 2 trigger name 3 )name"of"trigger*% 2order 3 )first$last*% 2stmtype 3 )insert$update$delete*
sp"settrigger order
2trigger name 3 )t3*% 2order 3 )first*% 2stmtype 3 )insert* 2trigger name 3 )t1*% 2order 3 )last*% 2stmtype 3 )insert*
sp"settrigger order
insert into dept +deptno, -alues +4/, trigger t3 fired trigger t2 fired trigger t1 fired Creating table from existing table: 1.'ith data0 1elect 5 into dept 1 from dept 2. 'ithout data0 1elect 5 into dept 2 from dept (reate table dept"insert from dept 'ithout data (reate trigger insert"data on dept for insert as begin insert into dept"insert select 5 from inserted end Insert into dept -alues +./% )edu*% )hyd*, 1elect 5 from dept"insert deptno dname loc ./ edu hyd select 5 from dept deptno dname 1/ 666666 2/ 666666 3/ 666666 7/ 666666 ./ edu loc 66666 66666 66666 66666 hyd
Delete trigger: This trigger fires when users performs delete operations on the table.
'hen user deletes the records from table a temporary table called deleted is created due to the trigger and deleted data is also stored temporarily in that table. create table dept"delete from dept without data create trigger deleted"data on dept for as begin insert into dept"delete select 5 from deleted end delete from dept where deptno 3 1/ select 5 from dept 1/ dept details will not appears select 5 from dept"delete deptno dname 1/c 1/ 8ccounting 9ewyor: Update trigger: This trigger fires with update operation when update operation is performed on the table. Two temporary tables% 1.I91;<T 2.D;L;T;D are created due to trigger the modified data is stored in the inserted table and old data stored in deleted table. truncate table dept"insert truncate table dept"delete create trigger update"data on dept for update as begin insert into dept"insert select 5 from insert insert into dept"delete select 5 from deleted end update dept set dname 3 );=>?<T@ loc 3 )1;(* where deptno 3 1/ select 5 from dept"insert deptno dname 1/ ;=>?<T loc 1;(
loc 9ewyor:
Instead of Triggers: These trigger are mainly created for -iews. 1yntax0 create trigger trigger"name on !-iew"name# Instead of insert$update$delete 8s 1&l statement create -iew -1/ as select 5 from emp where deptno31/ select 5 from -1/ it willdisplay an 1/th dept employees details. create trigger -1/"trg instead of insert as update -1/ set sal 3 sal A .// insert into -1/ +empno% ename% deprno, -alues +1//% )(B8D*% 1/, select 5 from -1/ instead records will not appears but salaries are modified due instead of trigger. create -iew dept"-iew as for insert as delete from dept"-iew insert into dept"-iew +deptno, -alues +4/, select 5 from dept"-iew datadeleted due to instead of trigger create -iew emp"dept as select empno% ename% dept. deptno% dname from emp% dept where emp.deptno 3 dept. deptno select 5 from emp"dept ;mpno ;name Deptno Dname
Insert into emp"dept +empnon ename% deptno% dname, -alues +1//% )(B8D@%./% )IM>?<T@, ;rror 1ince not possible to insert data into two tables through single -iew create trigger emp dept"trg on emp"dept for insert as begin insert into emp +empno%ename, select empno% ename from inserted. Insert into dept +deptno% dname,select deptnp% dname from inserted. ;nd insert into emp"dept +empno% ename% deptno% dname, -alues +1//% )(B8D*% ./% )IM>?<T*, select 5 from emp new record will be displayed along with old records select 5 from dept new record will be displayed along with old records. Displaying the code of Trigger: 1yntax0 1p"helptext )trigger"name* 1p"helptext )emp"dept* Displaying the triggers information for the table 1p"helptrigger )table"name* 1p"helptrigger )dept* DCL Commands: these commands are used to grant or re-o:e the permission on database obCects to other users. 1. grant: sed to grant the permissions and data obCects to users. 8dminstrator tools Drant select on dept to ram Drant insert% select on emp to ram <am$ram 123 login 1elect 5 from dept dept data is displayed
insert into dept -alues +./% )555*% )ddd*, error since no insert permission to ram select 5 from emp insert into emp +empno% ename, -alues +7//% )chris*, 1 record is inserted update emp set empno 3 111 where ename 3 )1MITB* error since no update permission to ram Re o!e: used to ta:e bac: the permissions gi-en to the users <e-o:e select on dept from <8M <e-o:e select% insert an emp from <8M "dministrator login: Dranting permission with grant option0 Drant select on dept to ram with grant option Ram login: Select # from dept data will be displayed grant select on dept to naresh naresh login0 select 5 from dept 8dministrator login0 <e-o:e select on dept from ram cascade now both ram and naresh will loose the permission on dept. sp"who it will display the status of logins.