PL / SQL触发器无法正常工作

时间:2016-05-30 14:59:58

标签: oracle plsql triggers

我的sql触发器在系统中添加登录时抛出错误,但如果没有,则不插入任何行。

有人可以说,为什么?

create or replace trigger user_login_exist_validator
before insert on USERS
for each row
declare
login varchar2(32 char) := :new.USER_LOGIN;
login_exists number(1,0) := 0;

begin
  select 1 into login_exists from USERS where USER_LOGIN=login;
if login_exists > 0
then
 RAISE_APPLICATION_ERROR(-20666, 'Użytkownik ' || login || ' już istnieje w systemie!!!');
end if;

end;

1 个答案:

答案 0 :(得分:1)

看起来像一个变异表错误。

您正在尝试读取相同的数据库表,而您已经在修改其中的数据。

取消触发器可能会更好。您可以捕获异常并在执行insert语句的位置处理它。

https://docs.oracle.com/cd/B13789_01/appdev.101/b10807/07_errs.htm