oracle - 如何限制没有人在oracle中禁用触发器
问题描述
我在插入或更新之前在表上创建触发器。我知道用户可以使用 Alter trigger disable 选项禁用触发器。我希望任何用户甚至 SYS 用户限制禁用特定触发器。我正在使用 Oracle 数据库 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;
推荐阅读
- ssl - 在 tomcat 8 中启用 SSL
- python - 从谷歌存储桶下载文件
- php - php artisan migrate 没有做任何事情
- excel - 多个期间的天数,减去任何重叠
- xamarin - Xamarin Forms Prism MVVM 嵌套 TabbedPage 问题
- python - Python dash服务器未更新
- javascript - 遵循 tween.js 的路径
- c++ - 如何将 VB.Net 字符串作为 char* 传递给 C++ dll?
- verilog - 使用 Quartus 2 设计环形振荡器
- ionic-framework - Ionic 4 CDN 和 VueJS 按钮样式不起作用