当它不是火时,触发错误“ORA-01403:没有找到数据”

时间:2014-11-24 18:10:52

标签: sql oracle oracle-sqldeveloper

我在下面创建一个触发器,只要我插入表中已存在的东西,然后打印其他明智的东西。

create or replace trigger TR_insert
Before INSERT On A
For each row 

DECLARE
l_act integer;
l_name varchar(30);
l_minute integer;

Begin 

select count(1) into l_act
From A
Where Activity=:new.Activity;


if(l_act>0) then
DBMS_OUTPUT.PUT_LINE ('There is duplicate.');
else
DBMS_OUTPUT.PUT_LINE('');
end if;

end;

当我插入存在的东西时工作正常,但是当我插入新项目时,它会发出错误" SQL错误:ORA-01403:找不到数据",为什么会这样?

1 个答案:

答案 0 :(得分:1)

您收到错误,因为您的选择不会为您的新项目返回任何值。下面的工作。

begin

select count(1) into l_act
From A
Where Activity=:new.Activity;

if(l_act>0) then
DBMS_OUTPUT.PUT_LINE ('There is duplicate.');
end if;

exception
when NO_DATA_FOUND then
DBMS_OUTPUT.PUT_LINE('');

end;