我有一个触发器可以阻止任何不是我的用户进行DML注射,无论谁尝试收到错误消息“抱歉,你不被允许这样做”
但是我的触发器显示此消息,但仍然继续使用用户发送的代码。有没有办法阻止这种情况发生,忽略声明或删除最近的交易?
旁注:我知道,使用触发器可能不是可行的方法,但请忽略这一点,我正在努力学习,现在我正在学习触发器。
谢谢
create or replace trigger my_ex
before insert or update or delete on kund
declare
my_ex exception;
begin
if user not in ('me') then raise my_ex;
end if;
exception
When only_boss then raise_application_error(-20009,'Illegal activity!');
rollback;
end;
/
答案 0 :(得分:0)
您的例外必须如此声明:
my_ex EXCEPTION;
PRAGMA EXCEPTION_INIT(my_ex, -20001);
然后默认情况下Oracle中的用户名是大写的,即你应该写
if user not in ('ME') then
raise my_ex;
end if;