触发创建视图 - 如何编写它 - Oracle

时间:2013-11-18 11:15:00

标签: oracle view triggers creation

当事件是创建视图时,我不知道如何在Oracle中编写触发器...
1)有可能吗?
2)我怎么写呢?像这样的东西?

create or replace trigger Creat_View
after create view <name of the view>

我是第一次触发,所以如果我犯了大错,我很抱歉!

中号

1 个答案:

答案 0 :(得分:2)

您将使用模式级触发器(假设您的用户名为SCOTT):

CREATE OR REPLACE TRIGGER no_create_view_trg 
  BEFORE CREATE ON SCOTT.SCHEMA 
DECLARE
   v_msg VARCHAR2(1000) :=
      'No create view allowed for CUSTOM on ' ||
       DICTIONARY_OBJ_OWNER || '.' ||
       DICTIONARY_OBJ_NAME || ' from ' ||
       LOGIN_USER;  
BEGIN
  IF DICTIONARY_OBJ_OWNER = user AND
     DICTIONARY_OBJ_NAME LIKE 'CUSTOM%' AND
     DICTIONARY_OBJ_TYPE = 'VIEW'
  THEN
     RAISE_APPLICATION_ERROR (
        -20905, v_msg);
  END IF;
END;

这将阻止创建名为CUSTOM _...的视图,但允许创建所有其他视图。