Oracle入門(十四 23)之管理觸發器

2021-08-20 10:14:12 字數 1617 閱讀 2697

要在模式中建立觸發器,需要:

•create trigger系統特權

•觸發器主體中引用的其他架構中的物件的普通物件特權(select,update,execute等)

•與觸發器關聯的表或檢視上的alter特權。

觸發器主體中的語句使用觸發器所有者的特權,而不是執行觸發觸發器的操作的使用者的特權。 下面展示了乙個例子。

使用者moe需要建立以下觸發器:

create or replace trigger upd_tom_emp

after update on tom.employees

begin

insert into mary.log_table values(user,sysdate);

sharon.calledproc;

end;

moe需要:

• create trigger

• alter on tom.employees

• insert on mary.log_table

• execute on sharon.calledproc.

可以在以下資料字典檢視中看到觸發器資訊:

•user_objects:物件名稱和物件型別(與架構中的所有其他物件型別一樣)

•user_triggers:觸發器的詳細**和狀態

•user_errors:觸發器的pl / sql語法錯誤(編譯錯誤)

使用user_triggers

*並非所有列都顯示在這裡

此示例顯示了觸發事件,時間,觸發器型別,狀態以及restrict_salary觸發器的詳細正文**:

改變觸發器的狀態

禁用或啟用資料庫觸發器:

alter trigger trigger_name disable | enable;
禁用或啟用**的所有觸發器:

alter table table_name disable | enable all triggers;
重新編譯表的觸發器:

alter trigger trigger_name compile;
要從資料庫中刪除觸發器,請使用drop trigger語句:

drop trigger trigger_name;
例:

drop trigger secure_emp;
注意:刪除**時,會刪除**上的所有觸發器。

Oracle入門(十四B)之PL SQL異常處理

定義 程式執行過程的警告或錯誤成為例外 exception 其他標準的oracle錯誤,可以自定義異常名,將其與指定oracle錯誤關聯,由系統觸發。例子 在pl sql定義部分宣告 some bad error exception pragma exception init some bad er...

Oracle入門(十四 18)之使用動態SQL

資料庫中的所有sql語句都經歷了不同的階段 解析 預執行 這可能嗎?檢查包括語法,物件存在,許可權等 繫結 獲取語句中引用的任何變數的實際值 執行 語句被執行。提取 結果返回給使用者。某些階段可能與所有語句無關 例如,提取階段適用於查詢,但不適用於dml。當pl sql子程式中包含sql語句時,解析...

Oracle筆記十四 使用者管理

sql語句分為三類 dml ddl dcl,之前已經講解完了dml和ddl,現在就差dcl操作的,dcl主要表示的是資料庫的控制語句,控制的就是操作許可權,而在dcl之中,主要有兩個語法 grant revoke 許可權的操作基礎是需要有使用者的,而這個時候就需要通過乙個新的使用者進行演示,而要想建...