Triggers are PLSQL block or Procedures which get executed whenever:
1) an INSERT DELETE or UPDATE happens on a table.
2) DDL like ALTER or CREATE happens on a table.
3) an INSTEAD OF trigger on a view is issued - If a DML operation is issued on a view the INSTEAD OF trigger defines what actions take place.
Now A triggering statement contains:
Trigger timing
For table: BEFORE AFTER
For view: INSTEAD OF
Triggering event: INSERT UPDATE or DELETE
Table name: On table or view
Trigger type: Row or statement
WHEN clause: Restricting condition
Trigger body: is the PL/SQL block
Statement Type - Trigger body executes once for the triggering event. A statement trigger executes once even if no rows are affected at all.
Row Trigger - Trigger body executes once for each row affected by the triggering event. A row trigger is not executed if the triggering event affects no rows. INSTEAD OF triggers are row triggers.
Mutating Table: A mutating table is a table that is currently being modified by an UPDATE DELETE or INSERT statement or a table that might need to be updated by the effects of a declarative DELETE CASCADE referential integrity action. A table is not considered mutating for STATEMENT triggers.
The triggered table itself is a mutating table as well as any table referencing it with the FOREIGN KEY constraint. This restriction prevents a row trigger from seeing an inconsistent set of data.