You are on page 1of 6

TRIGGERS

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

insert into projects values('Kiran Building','Delhi');

insert into projects values('Madhu Sweet House','Delhi');

insert into projects values('DINESH DEcorations','HYD');

insert into projects values('Smith Textiles','texas');

COMMIT;

-- View the results

SELECT * FROM projects;

Example :

Write a trigger to insert or update the data of projects in upper case?


[Generally to maintain uniform data in the business Database]

create or replace trigger trig_upper


before
insert or update on projects
for each row
begin
:new.pname:=upper(:new.pname);
:new.city:=upper(:new.city);
end trig_UPPER;
/

Example: write a trigger to maintain Audit transaction details of employee table data?

create table projects


(
pname varchar2(20),
city varchar2(20)
);

-- insert records

insert into projects values('Kiran','Delhi');

insert into projects values('Madhu','Delhi');

insert into projects values('DINESH','HYD');

insert into projects values('Smith','texas');

COMMIT;

create table emp_audit_New

ename varchar2(20),

city varchar2(20),

opname varchar2(30),

opdt date

);

create table emp_audit_Changed


(

ename varchar2(20),

city varchar2(20),

opname varchar2(30),

opdt date

);

create table emp_audit_delete

ename varchar2(20),

city varchar2(20),

opname varchar2(30),

opdt date

);

create or replace trigger trig_emp_Audit

before

insert or update or delete on employee

for each row

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;

You might also like