Say you have a bit of code or better yet a stored procedure that represents a transaction, and you read it. I get it.” But if you are on a system laden with triggers all over the place, you won’t have gotten it at all—you’ll have gotten it wrong, at best. More than once, I’ve received an e-mail similar to the following (this is a cut-and-paste—I did not make this up): We have a problem when updating a column.
First, their NAME attribute should have been a column in a view (or, in Oracle Database 11, a virtual column). A trigger defined on a schema fires for each event associated with the owner of the schema (the current user).A trigger defined on a database fires for each event associated with all users. Compound triggers make it easier to program an approach where you want the actions you implement for the various timing points to share common data. When a trigger is fired, the tables referenced in the trigger action might be currently undergoing changes by SQL statements in other users' transactions.NEXTVAL INTO : NEW.my_col3 FROM DUAL; END IF; IF : NEW.my_col4 IS NULL THEN (...) END IF; END IF; END; / -- Scenario 2 CREATE OR REPLACE TRIGGER my_trg1 BEFORE INSERT ON my_table FOR EACH ROW BEGIN IF : NEW.my_col3 IS NULL THEN SELECT my_seq.NEXTVAL INTO : NEW.my_col3 FROM DUAL; END IF; IF : NEW.my_col4 IS NULL THEN (...) END IF; END; / CREATE OR REPLACE TRIGGER my_trg2 BEFORE UPDATE ON my_table FOR EACH ROW BEGIN IF : NEW.my_col IS NULL THEN raise_application_error(...); END IF; IF : NEW.my_col2 IS NULL THEN : NEW.my_col2 := (...); END IF; END; / I can't see any major advantage to one or the other.If this privilege is later revoked, you can drop the trigger but not alter it.The object privileges to the schema objects referenced in the trigger body must be granted to the trigger owner explicitly (not through a role).Once the trigger is created, entering the following SQL statement: A trigger is either a stored PL/SQL block or a PL/SQL, C, or Java procedure associated with a table, view, schema, or the database itself.Oracle automatically executes a trigger when a specified event takes place, which may be in the form of a system event or a DML statement being issued against the table.Our technologist looks at trigger maintenance and implementation challenges.Those of you who frequent the asktom.Web site know that I have an aversion to triggers.