您好,登錄后才能下訂單哦!
有時,為了防止意外刪除數(shù)據(jù)庫中的表或者其他數(shù)據(jù)庫對象,可以通過人為的增加一個trigger來實現(xiàn)。如下:
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登錄執(zhí)行,然后使用一個業(yè)務用戶登錄測試drop;
SQL> drop table test;
drop table a
ORA-00604: 遞歸 SQL 級別 1 出現(xiàn)錯誤
ORA-20001: TEST.TEST You have no permission to this operation
ORA-06512: 在 line 9
這里是參考一位大師的解決思路,類似需求可以參考這個加以修改。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。