Oracle入门(十四.23)之管理触发器
生活随笔
收集整理的這篇文章主要介紹了
Oracle入门(十四.23)之管理触发器
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、觸發(fā)器需要特權(quán)
要在模式中創(chuàng)建觸發(fā)器,需要:?CREATE TRIGGER系統(tǒng)特權(quán)
?觸發(fā)器主體中引用的其他架構(gòu)中的對象的普通對象特權(quán)(SELECT,UPDATE,EXECUTE等)
?與觸發(fā)器關(guān)聯(lián)的表或視圖上的ALTER特權(quán)。
觸發(fā)器主體中的語句使用觸發(fā)器所有者的特權(quán),而不是執(zhí)行觸發(fā)觸發(fā)器的操作的用戶的特權(quán)。 下面展示了一個例子。
二、觸發(fā)器所需的特權(quán)示例
用戶MOE需要創(chuàng)建以下觸發(fā)器:
CREATE OR REPLACE TRIGGER upd_tom_emp AFTER UPDATE ON tom.employees BEGININSERT 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.
三、在數(shù)據(jù)字典中查看觸發(fā)器
可以在以下數(shù)據(jù)字典視圖中看到觸發(fā)器信息:
?USER_OBJECTS:對象名稱和對象類型(與架構(gòu)中的所有其他對象類型一樣)?USER_TRIGGERS:觸發(fā)器的詳細代碼和狀態(tài)
?USER_ERRORS:觸發(fā)器的PL / SQL語法錯誤(編譯錯誤)
使用USER_TRIGGERS
*并非所有列都顯示在這里
四、使用USER_TRIGGERS查看觸發(fā)信息
此示例顯示了觸發(fā)事件,時間,觸發(fā)器類型,狀態(tài)以及RESTRICT_SALARY觸發(fā)器的詳細正文代碼:
SELECT trigger_name, trigger_type, triggering_event,table_name, status, trigger_bodyFROM USER_TRIGGERSWHERE trigger_name = 'RESTRICT_SALARY';改變觸發(fā)器的狀態(tài)
禁用或啟用數(shù)據(jù)庫觸發(fā)器:
ALTER TRIGGER trigger_name DISABLE | ENABLE;禁用或啟用表格的所有觸發(fā)器:
ALTER TABLE table_name DISABLE | ENABLE ALL TRIGGERS;重新編譯表的觸發(fā)器:
ALTER TRIGGER trigger_name COMPILE;五、刪除觸發(fā)器
要從數(shù)據(jù)庫中刪除觸發(fā)器,請使用DROP TRIGGER語句:
DROP TRIGGER trigger_name;例:DROP TRIGGER secure_emp;注意:刪除表格時,會刪除表格上的所有觸發(fā)器。
總結(jié)
以上是生活随笔為你收集整理的Oracle入门(十四.23)之管理触发器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乘联会:9 月国内二手车数量环比上涨,入
- 下一篇: 漫画:什么是分布式锁