如何限制Oracle中没有一个禁用触发器

问题描述 投票:0回答:1

我在插入或更新之前在表上创建触发器。我知道用户可以使用“更改触发器禁用”选项来禁用触发器。我希望任何用户甚至SYS用户限制都禁用特定触发器。我正在使用Oracle Database 11g。

如何实现这个目标?

谢谢

oracle oracle11g ddl database-trigger
1个回答
0
投票

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;
© www.soinside.com 2019 - 2024. All rights reserved.