2013-11-18 1 views
0

Я не знаю, как написать триггер в Oracle, когда событие является созданием представления ...
1st) это возможно?
2nd) как я могу его написать? Что-то вроде этого?триггер по созданию представления - как его написать - Oracle

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

Я нахожусь на своих первых срабатываниях, поэтому извините, если я совершу огромные ошибки!

M

ответ

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 _..., но позволяют создание всех других представлений.