Oracle allows more than one trigger to be created for the same timing point on a table , but it has never guaranteed the execution order of those triggers.
The Oracle 11g trigger syntax now includes the FOLLOWS clause to guarantee execution order for triggers defined with the same timing point.
The following example creates a table with two triggers for the same timing point.
CREATE TABLE TRIGG_EXMP_FOLLOWS (
id NUMBER,
description VARCHAR2(50)
);
CREATE OR REPLACE TRIGGER TRIGG_EXMP_FOLLOWS_1
BEFORE INSERT ON TRIGG_EXMP_FOLLOWS
FOR EACH ROW
BEGIN
DBMS_OUTPUT.put_line('TRIGG_EXMP_FOLLOWS_1 - Executed');
END;
/
CREATE OR REPLACE TRIGGER TRIGG_EXMP_FOLLOWS_2
BEFORE INSERT ON TRIGG_EXMP_FOLLOWS
FOR EACH ROW
BEGIN
DBMS_OUTPUT.put_line('TRIGG_EXMP_FOLLOWS_2 - Executed');
END;
/
Defining Order of Excecution of Trigger using FOLLOW keyword
CREATE OR REPLACE TRIGGER TRIGG_EXMP_FOLLOWS_1
BEFORE INSERT ON TRIGG_EXMP_FOLLOWS
FOR EACH ROW
FOLLOWS TRIGG_EXMP_FOLLOWS_2
BEGIN
DBMS_OUTPUT.put_line('TRIGG_EXMP_FOLLOWS_1 - Executed');
END;
/
The Oracle 11g trigger syntax now includes the FOLLOWS clause to guarantee execution order for triggers defined with the same timing point.
The following example creates a table with two triggers for the same timing point.
CREATE TABLE TRIGG_EXMP_FOLLOWS (
id NUMBER,
description VARCHAR2(50)
);
CREATE OR REPLACE TRIGGER TRIGG_EXMP_FOLLOWS_1
BEFORE INSERT ON TRIGG_EXMP_FOLLOWS
FOR EACH ROW
BEGIN
DBMS_OUTPUT.put_line('TRIGG_EXMP_FOLLOWS_1 - Executed');
END;
/
CREATE OR REPLACE TRIGGER TRIGG_EXMP_FOLLOWS_2
BEFORE INSERT ON TRIGG_EXMP_FOLLOWS
FOR EACH ROW
BEGIN
DBMS_OUTPUT.put_line('TRIGG_EXMP_FOLLOWS_2 - Executed');
END;
/
Defining Order of Excecution of Trigger using FOLLOW keyword
CREATE OR REPLACE TRIGGER TRIGG_EXMP_FOLLOWS_1
BEFORE INSERT ON TRIGG_EXMP_FOLLOWS
FOR EACH ROW
FOLLOWS TRIGG_EXMP_FOLLOWS_2
BEGIN
DBMS_OUTPUT.put_line('TRIGG_EXMP_FOLLOWS_1 - Executed');
END;
/
No comments:
Post a Comment