通過trigger禁止使用者刪除或修改等DDL操作
有時,為了防止意外刪除資料庫中的表或者其他資料庫物件,可以通過人為的增加一個trigger來實現。如下:
create or replace trigger ddl_deny
before create or alter or drop or truncate on database
declare
l_errmsg varchar2(100):= 'You have no permission to this operation';
begin
if ora_sysevent = 'CREATE' then
raise_application_error(-20001, ora_dict_obj_owner || '.' || ora_dict_obj_name || ' ' || l_errmsg);
elsif ora_sysevent = 'ALTER' then
raise_application_error(-20001, ora_dict_obj_owner || '.' || ora_dict_obj_name || ' ' || l_errmsg);
elsif ora_sysevent = 'DROP' then
raise_application_error(-20001, ora_dict_obj_owner || '.' || ora_dict_obj_name || ' ' || l_errmsg);
elsif ora_sysevent = 'TRUNCATE' then
raise_application_error(-20001, ora_dict_obj_owner || '.' || ora_dict_obj_name || ' ' || l_errmsg);
end if;
exception
when no_data_found then
null;
end;
/
最好用sysdba登入執行,然後使用一個業務使用者登入測試drop;
SQL> drop table test;
drop table a
ORA-00604: 遞迴 SQL 級別 1 出現錯誤
ORA-20001: TEST.TEST You have no permission to this operation
ORA-06512: 在 line 9
這裡是參考一位大師的解決思路,類似需求可以參考這個加以修改。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-714699/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 透過trigger禁止使用者刪除或修改等DDL操作
- 禁止使用者的DDL操作
- 禁止DDL執行的trigger
- Oracle 禁止刪除使用者Oracle
- 透過觸發器禁止模式物件的DDL操作觸發器模式物件
- 控制DDL許可權及紀錄DDL操作的Trigger
- 【原創】通過資料字典操作刪除表的列
- mysql使用者建立、修改、刪除及授權操作的總結MySql
- 通過MySQL的UDFs和Trigger操作Memcached薦MySql
- 資料庫觸發器,禁止DDL操作資料庫觸發器
- oracle資料庫建立、刪除索引等操作Oracle資料庫索引
- win10 禁止刪除縮圖方法 win10如何禁止刪除縮圖Win10
- Linux 建立修改刪除使用者和組Linux
- MongoDB 刪除,新增副本集,並修改副本集IP等資訊MongoDB
- vue-cli 如何修改或刪除預設preset記錄Vue
- Create a trigger TO monitoring DDL
- 禁止客戶端誤刪除tablespace客戶端
- Java Web如何操作Cookie的新增修改和刪除JavaWebCookie
- Oracle使用者的新增、修改、刪除及授權Oracle
- php實現openfire使用者同步新增,刪除,修改PHP
- MySQL新建使用者,授權,刪除使用者,修改密碼MySql密碼
- 通過pip刪除/管理django舊版本薦Django
- 通過ROWID刪除重複資料
- 輕量級外掛sdstorage用於操作localStorage支援過期、批量搜尋刪除等
- mac下通過dscl命令對使用者/使用者組進行增刪改查操作Mac
- 道歉,上傳的檔案或圖片等資料被刪除
- MySQL通過Binlog恢復刪除的表MySql
- 刪除使用者全部物件,不用刪除使用者(摘)物件
- Oracle 增加 修改 刪除 列Oracle
- MySQL新增列、刪除列,建立主鍵等常用操作總結MySql
- 在 Linux 中更改、刪除或禁用使用者密碼Linux密碼
- Laravel 軟刪除操作Laravel
- 【Flashback】回收站中被標記刪除的表不可以DML和DDL操作
- C#對DataGridView進行新增、修改、刪除資料操作C#View
- javafx-tableview刪除或修改預設的“表中無內容”文字JavaView
- linux建立使用者、設定密碼、修改使用者、刪除使用者Linux密碼
- laravel-admin 新增,刪除,批量操作,匯入匯出,修改 等頁面按鈕 顯示與關閉Laravel
- 透過C#在Word中插入或刪除分節符C#