What is Trigger ?
A trigger is defined as an action taken by database when some database related events occur.
Triggers are implicitly fired by ORACLE when triggering event occur,no matter which user is using or used by which application.
The code within the trigger called the trigger body.
Trigger fires in following operations
- DML statements (INSERT, UPDATE, DELETE).
- DDL statements ( CREATE or ALTER)
- Database events such as logon/logoff, errors, startup /shutdown, etc.
Types of DML triggers
- BEFORE INSERT row
- BEFORE INSERT statement
- AFTER INSERT row
- AFTER INSERT statement
- BEFORE UPDATE row
- BEFORE UPDATE statement
- AFTER UPDATE row
- AFTER UPDATE statement
- BEFORE DELETE row
- BEFORE DELETE statement
- AFTER DELETE row
- AFTER DELETE statement
Creating a trigger
Trigger can be created using the create trigger command.
Syntax
CREATE (OR REPLACE) TRIGGER trigger_name[BEFORE|AFTER][DELETE|INSERT|UPDATE[ OF column_name]]ON table_name[FOR EACH ROW][WHEN condition][PL/SQL BLOCK];
Trigger example 1
Program of trigger for converting lowercase to uppercase before insert.
Name it as trig.sql.
CREATE or REPLACE trigger upper1 BEFORE INSERT on STUDENTFor each ROWBEGIN:new.stdname:=upper (:new.stdname);END;
Than compile above trigger using:
SQL>GET TRIG.SQL;
After compilation this message will display:
Trigger is created successfully.
Trigger example 2
Program of trigger for after insert. To increment the serial number automatically after inserting the new student record.
CREATE or REPLACE trigger after_trigger1 AFTER INSERT ON studentFor each ROWBEGINUPDATE student SET sno - sno+1 where stdname = new.stdname;END;
Trigger example 3
Program of trigger for after delete.
To decrement the serial number automatically after deleting the student record from table student.
CREATE or REPLACE trigger after_delete1 AFTER DELETE ON studentFor each ROWBEGINUPDATE student SET sno = sno-1 where stdname=:old.stdname;END;