Oracle
更改觸發器 Oracle
如果表被某些 DML 操作鎖定,alter trigger 會掛起嗎?它會拋出什麼樣的異常?資源繁忙 0054 或其他異常…?我試圖重現這種情況,但徒勞無功。
測試案例。
打開 2 個 sqlplus 會話,首先執行以下命令來設置測試:
create table stall_table ( a number ); create or replace trigger stall_session before insert on stall_table begin DBMS_LOCK.sleep(10000); end;
然後,在會話 1 中執行:
SQL> insert into stall_table values ( 1 ) ;
在會話 2 中執行:
SQL> create or replace trigger stall_session before insert on stall_table begin DBMS_LOCK.sleep(10000); end; /
一段時間後你會得到:
create or replace trigger stall_session * ERROR at line 1: ORA-04021: timeout occurred while waiting to lock object SQL>
…這回答了你的問題。