日期:2014-05-16  浏览次数:20465 次

防止oracle 对象被意外删除之触发器版

废话不多说,直接看代码

?

create or replace trigger del_deny
before drop or truncate on database
declare
l_errmsg varchar2(200):= '请勿在库任何对象!';
begin

? if 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;