当事件是创建视图时,我不知道如何在Oracle中编写触发器...
1)有可能吗?
2)我怎么写呢?像这样的东西?
create or replace trigger Creat_View
after create view <name of the view>
我是第一次触发,所以如果我犯了大错,我很抱歉!
中号
答案 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 _...的视图,但允许创建所有其他视图。