"使用" pragma AUTONOMOUS_TRANSACTION 範例
--建立 Temp Table create tom1 ( aa varchar2(100); ); --建立 Temp 程序 create or replace procedure tomPro is pragma AUTONOMOUS_TRANSACTION; begin insert into tom1 values('123'); commit; end; --執行 begin insert into tom1 values( 'abc' ); tomPro; insert into tom1 values( 'xyz' ); rollback; end; --查看 Temp Table 結果 123
在Real Table很容易被lock,造成別人不能使用
若使用AUTONOMOUS_TRANSACTION,可以避免table lock的困擾
以下是一個不錯的範例介紹
CREATE OR REPLACE TRIGGER myTrigger
AFTER INSERT ON myTable
FOR EACH ROW
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
UPDATE myMaxTable
SET maxValue = ( SELECT MAX(c1) FROM myTable );
COMMIT;
END;
/
INSERT INTO myTable VALUES (1);
COMMIT;
INSERT INTO myTable VALUES (2);
COMMIT;
SELECT maxValue FROM myMaxTable;
MAXVALUE
----------
1
SELECT MAX(c1) FROM myTable;
MAX(C1)
----------
2
http://www.astral-consultancy.co.uk/cgi-bin/hunbug/doco.cgi?11470
沒有留言:
張貼留言