Professional Documents
Culture Documents
*********
TRIGGER is a data base object like a procedure to perform back ground task.
Triggers are executed automatically with out exec statement or calling statement.
Pseudo Functions:
***************
:NEW.colname
It can access the new value from the column.
[ insert & After update ]
:OLD.colname
It can access old value from the column.
[ Before update & before delete ]
i) Trigger Event:-
Reason for trigger execution.
iii)Trigger Action:-
It is the task of trigger.
syntax:
create or replace trigger <trig_name>
[before / after]
[ insert / update /delete ]
ON <table name>
[FOR EACH ROW]
declare
------
------
BEGIN
------------
------------
END <trig_name>;
/ [ to compile the trigger in sql * plus ]
trigger created.
ex: table
ENAME CITY
-------------------- --------------------
Kiran Delhi
madhu Delhi
DINESH HYD
smith texas
Ex:
write a trigger to insert or update the data of employee in
upper case?
/
Ex:
declare
vcustid number;
vcustname varchar2(20);
vcustcity varchar2(20);
vgender char;
begin
vcustname:='&vcustname';
vcustcity:='&vcustcity';
vgender:='&vgender';
insert into customers(cname,city,gender) values
(vcustname,vcustcity,vgender);
select customerid.currval into vcustid
from dual;
dbms_output.put_line
(chr(10)||' welcome to amazon.in Mr. '||vcustname||
chr(10)||' Your customer id: '||vcustid);
end;
Ex:
Consider a table customers with columns cname,city,gender,custid.
Generate customer id values automatically.
Accept cname,city, gender values from each customer.
Maintain audit data of customer table .
create sequence auditcustid;
-->
create table cust_audit_update
(
cname varchar2(20),
city varchar2(20),
gender char,
status varchar2(20) ,
opdt date default sysdate
);
--->
create or replace trigger trig_audit_update
before update
on customers
for each row
begin
insert into cust_audit_update(cname,city,gender,status)
values
(:old.cname,:old.city,:old.gender,'Before Update');
insert into cust_audit_update(cname,city,gender,status)
values
(:new.cname,:new.city,:new.gender,'After Update');
end trig_audit_update;
--->
create table cust_audit_delete
(
cname varchar2(20),
city varchar2(20),
gender char,
status varchar2(20) default 'deleted',
opdt date default sysdate
);
--->
create or replace trigger trig_audit_delete
before delete
on customers
for each row
begin
insert into cust_audit_delete(cname,city,gender)
values
(:old.cname,:old.city,:old.gender);
end trig_audit_delete;
update customers
set city=decode(cname,'KIRAN','VIZAG',
'FAROOQ','RANCHI')
WHERE CNAME IN('KIRAN','FAROOQ');
***************************************************************
Ex:
write a trigger to maintain Audit transaction details
of employee table?
-->Trigger-1
-->Trigger-2
--Trigger-3
****************************************************************
Trigger:
******
sample examples:
ENAME CITY
---------- ----------
A CHENNAI
b chennai
s blore
X DALLAS
Y TEXAS
1 row deleted.
ENAME CITY
---------- ----------
A CHENNAI
s blore
X DALLAS
Y TEXAS
NOTE:
system table: USER_TRIGGERS
INSTEAD OF triggers:
******************
Instead of triggers are defined on views.
A normal DML trigger executes only when a DML operation is
issued on a table.
Whereas instead of trigger fires when a DML statment is issued on
the view.
Instead-of triggers defined only at row level.
syntax:
--------
create or replace trigger <name>
INSTEAD OF [insert /update/delete ]
ON <viewname>
FOR EACH ROW
----
----
begin
--
--
end <name>;
/
Ex:
consider a view based on emp and dept tables?
And create a trigger to display error information
if any insertion on the view?
-->Table Created.
View created.
Ex:
How to display list of trigger names?
Ex:
Can i alter trigger?
Yes
Ex:
How to delete a trigger?
=====================================================