首页 > 解决方案 > 如何限制没有人在oracle中禁用触发器

问题描述

我在插入或更新之前在表上创建触发器。我知道用户可以使用 Alter trigger disable 选项禁用触发器。我希望任何用户甚至 SYS 用户限制禁用特定触发器。我正在使用 Oracle 数据库 11g。

如何实现这个目标?

谢谢

标签: oracleoracle11gddldatabase-trigger

解决方案


需要DDL触发器database

create or replace trigger trg_ddl before ddl on database
declare
  v_oty          varchar2(75) := ora_dict_obj_type;
  v_evt          varchar2(75) := ora_sysevent;
  v_olu          varchar2(75) := nvl(ora_login_user,'Undetermined Schema');
begin     
  if ( nvl(v_evt,'X--|') = 'ALTER' and nvl(v_oty,'Y-|') = 'TRIGGER' 
                                   and nvl(olu,'Z|--|') not in ('SYS','SYSTEM') ) then 
    raise_application_error( -20900 ,'Forbidden Operation');
  end if; 
end;

推荐阅读