Oracle

更改觸發器 Oracle

  • January 18, 2015

如果表被某些 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>

…這回答了你的問題。

引用自:https://dba.stackexchange.com/questions/89548