我在下面创建一个触发器,只要我插入表中已存在的东西,然后打印其他明智的东西。
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:找不到数据",为什么会这样?
答案 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;