Предотвратить падение в Oracle - PullRequest
0 голосов
/ 25 марта 2019

Как запретить пользователю не отбрасывать просмотр, даже если он / она имеет преимущество?У меня есть представление, используемое приложением.Тем не менее, он был сброшен пользователем пару раз.Есть ли что-то вроде REVOKE DROP при любом виде?Должен ли я использовать триггер для этого?

1 Ответ

2 голосов
/ 25 марта 2019

Триггер может помочь.Вот пример.

Во-первых, несколько объектов, которые нужно отбросить:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...