Professional Documents
Culture Documents
TRIGGER is a data base object which can be enabled or executed implicitly for any DML
operation on the table.
Generally it can be used to take an audit information of table data.
Trigger contains 3 parts :
i) Trigger event
Any DML ( insert or update or delete ) operation is known as trigger event
ii) Trigger restriction
It controls the trigger execution that is before or after DML operation.
iii) Trigger action
It implements or represent the logic or functionality of the trigger, that is what it is doing for
DML operation.
Types of triggers: 12
At row level
FOR EACH ROW--It enable the trigger execution for each record inside the table.
The following are record level triggers :
before insert
after insert
before update
after update
before delete
after delete
At statement level--Trigger is executed only once for any number affected records for a DML
operation
before insert
after insert
before update
after update
before delete
after delete
:NEW--It represents the new values into a column[ insert & After update ]
:OLD--It represents the old values from a column [ Before update & before delete ]
Syntax :
create or replace trigger <trig_name>
[before / after]
[ insert / update /delete ] of <col1>,<col2>......
on <table name>
FOR EACH ROW
declare
------
------
BEGIN
------------
------------
------------
END <trig_name>;
Ex: table
create table projects
(
pname varchar2(20),
city varchar2(20)
);
-- insert records
COMMIT;
Example :
Example: write a trigger to maintain Audit transaction details of employee table data?
-- insert records
COMMIT;
ename varchar2(20),
city varchar2(20),
opname varchar2(30),
opdt date
);
ename varchar2(20),
city varchar2(20),
opname varchar2(30),
opdt date
);
ename varchar2(20),
city varchar2(20),
opname varchar2(30),
opdt date
);
before
declare
opname varchar2(32);
begin
if inserting then
opname:='inserted';
insert into emp_audit_New values(:new.ename,:new.city,opname,sysdate);
end if;
if updating then
opname:='Before Update-oldvalues';
insert into emp_audit_Changed values
(:old.ename,:old.city,opname,sysdate);
opname:='After Update--new values';
insert into emp_audit_Changed values
(:new.ename,:new.city,opname,sysdate);
end if;
if deleting then
opname:='deleting';
insert into emp_audit_delete values
(:old.ename,:old.city,opname,sysdate);
end if;
end trig_emp_Audit;