Sometimes, you need to make a difference between the fact that some column or another one is updated.
Thus, the trigger can fire in a very fine grained fashion.
The trick is very simple, just use the function updating(column_name).
create table test (field1 number, filed2 number);
CREATE OR REPLACE TRIGGER trigo
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
if updating ('field1') and not updating ('field2') then
WHEN some_exception THEN
'bad ideea !!!!'
In the example above, the trigger prevents updating of the column field1 and leaving the column field2 untouched.