您好,登錄后才能下訂單哦!
有時,為了防止意外刪除數據庫中的表或者其他數據庫對象,可以通過人為的增加一個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
這里是參考一位大師的解決思路,類似需求可以參考這個加以修改。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。