Ausführungsreihenfolge von Triggern in Oracle 11g

Vor Oracle 11g konnte die Ausführungsreihenfolge gleicher Trigger auf einer Tabelle nicht beeinflusst werden. Dieses kann ab Oracle 11g mit der FOLLOWS-Klausel erreicht werden.

CONN HR/hr
SET ECHO ON
SET SERVEROUTPUT ON
CL SCR

CREATE TABLE TAB_TEST
(
 S1 NUMBER,
 S2 VARCHAR2(10)
);

CREATE OR REPLACE TRIGGER TR_1
BEFORE INSERT ON TAB_TEST
FOR EACH ROW
BEGIN
 DBMS_OUTPUT.PUT_LINE('TR_1');
END;
/

CREATE OR REPLACE TRIGGER TR_2
BEFORE INSERT ON TAB_TEST
FOR EACH ROW
BEGIN
 DBMS_OUTPUT.PUT_LINE('TR_2');
END;
/
PAUSE

SET ECHO OFF
EXEC DBMS_OUTPUT.PUT_LINE('INSERTING DATA');
INSERT INTO TAB_TEST VALUES(1,'TEST');
EXEC DBMS_OUTPUT.PUT_LINE('-----');
INSERT INTO TAB_TEST VALUES(1,'TEST');

PAUSE

DROP TABLE TAB_TEST PURGE;

SET ECHO ON

CREATE TABLE TAB_TEST
(
 S1 NUMBER,
 S2 VARCHAR2(10)
);

CREATE OR REPLACE TRIGGER TR_1
BEFORE INSERT ON TAB_TEST
FOR EACH ROW
BEGIN
 DBMS_OUTPUT.PUT_LINE('TR_1');
END;
/

CREATE OR REPLACE TRIGGER TR_2
BEFORE INSERT ON TAB_TEST
FOR EACH ROW
FOLLOWS TR_1
BEGIN
 DBMS_OUTPUT.PUT_LINE('TR_2');
END;
/

PAUSE

SET ECHO OFF
EXEC DBMS_OUTPUT.PUT_LINE('INSERTING DATA');
INSERT INTO TAB_TEST VALUES(1,'TEST');
EXEC DBMS_OUTPUT.PUT_LINE('-----');
INSERT INTO TAB_TEST VALUES(1,'TEST');

PAUSE

DROP TABLE TAB_TEST PURGE;

SET ECHO ON