I'm coding a Trigger to ensure only one type of money can be set as official.
My intention is code a "BEFORE INSERT OR UPDATE" trigger.
All INSTEAD OF triggers are fired for each row and you cannot narrow down the event by column.Many applications update all of the columns in a table -- setting them to their old value, rather then trying to figure out exactly which columns have been updated by the client. create or replace trigger test_trigger 2 after update of x,y on test 3 for each row 4 begin 5 if updating( 'X' ) then 6 dbms_output.put_line( 'X is being updated' ); 7 end if; 8 9 if updating( 'Y' ) then 10 dbms_output.put_line( 'Y is being updated' ); 11 end if; 12 end; 13 / Trigger created.SQL Notice in the last update it indicated that x and y both were being updated (which they were), but the update didn't change the value (both x and y were 1 prior to the update which set them to 1). You can use updating (column) but it will only tell you that the column itself is being updated and not if the value has changed.Oracle Database XE automatically executes a trigger when a specified event takes place, which usually is a DML statement being issued against the table.The types of triggers are: Trigger names must be unique with respect to other triggers in the same schema.Such statements produce a warning in the error log when using statement-based mode and are written to the binary log using the row-based format when using statement against a table having more than one unique or primary key is also marked as unsafe.