Introduction If a table column is updated with the same value in a row, does Oracle RDBMS engine modify the data?
(or) Does RDBMS engine have an optimization skipping the update, as value of that column is not changing?
These trigger types are referred to as "Schema-level triggers". Performing conditional actions in triggers (or testing data following modification) is done through accessing the temporary Inserted and Deleted tables. The following functionality in SQL:2003 was previously not implemented in Postgre SQL: Firebird supports multiple row-level, BEFORE or AFTER, INSERT, UPDATE, DELETE (or any combination thereof) triggers per table, where they are always "in addition to" the default table changes, and the order of the triggers relative to each other can be specified where it would otherwise be ambiguous (POSITION clause.) Triggers may also exist on views, where they are always "instead of" triggers, replacing the default updatable view logic.
(Before version 2.1, triggers on views deemed updatable would run in addition to the default logic.) Firebird does not raise mutating table exceptions (like Oracle), and triggers will by default both nest and recurse as required (SQL Server allows nesting but not recursion, by default.) Firebird's triggers use NEW and OLD context variables (not Inserted and Deleted tables,) and provide UPDATING, INSERTING, and DELETING flags to indicate the current usage of the trigger.
2) Statement level trigger - An event is triggered for each sql statement executed.
Below follows a series of descriptions of how some popular DBMS support triggers.
In addition to triggers that fire when data is modified, Oracle 10g supports triggers that fire when schema level objects (that is, tables) are modified and when user logon or logoff events occur.
This was the essence of a question asked in Oracle-l list and I think, it is a good topic for further discussion.
Jared Still came up with a fine method to understand this issue measuring redo/undo size.