如何限制Oracle中没有一个禁用触发器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何限制Oracle中没有一个禁用触发器相关的知识,希望对你有一定的参考价值。
我在插入或更新之前在表上创建触发器。我知道用户可以使用“更改触发器禁用”选项来禁用触发器。我希望任何用户甚至SYS用户限制都禁用特定触发器。我正在使用Oracle Database 11g。
如何实现这个目标?
谢谢
答案
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;
以上是关于如何限制Oracle中没有一个禁用触发器的主要内容,如果未能解决你的问题,请参考以下文章