如何阻止用户不放弃视图,即使他/她有这样的优势?我有一个应用程序使用的视图。但是,它被用户丢弃了几次。有什么像REVOKE DROP ANY VIEW?我必须使用触发器吗?
触发可能会有所帮助。这是一个例子。
首先,要删除一些对象:
SQL> create table test as select * From emp where 1 = 2;
Table created.
SQL> create or replace view v_dept as select * From dept;
View created.
SQL>
我不想让V_DEPT被删除,所以:
SQL> create or replace trigger trg_drop
2 before drop on schema
3 declare
4 l_name varchar2(30);
5 begin
6 select ora_dict_obj_name
7 into l_name
8 from dual;
9 if l_name = 'V_DEPT' then
10 raise_application_error(-20001, 'Forbidden');
11 end if;
12 end;
13 /
Trigger created.
测试:
SQL> drop view v_dept;
drop view v_dept
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-20001: Forbidden
ORA-06512: at line 8
SQL> drop table test;
Table dropped.
SQL>