从我读到的有关触发器及其工作方式的内容中,我认为在我将值插入其中后,此触发器会将数据插入与我的表phonenumber相关的关系中。我正在使用dbms_random创建一个随机的5位使用ID,该ID在使用表中尚未存在(或者至少是我认为它会做的)。
create table phoneNumber(phoneNumber varchar(12) PRIMARY KEY, primaryNumber varchar(12));
create table acct_num(acctID numeric(5) references ACCOUNT, primaryNumber varchar(12) references ACCOUNT, phoneNumber varchar(12) references phoneNumber);
create table phone_usage(usageID varchar(5) references USAGE, phoneNumber varchar(12) references PHONENUMBER)
但是当我尝试插入phoneNumber表时,它会抛出以下错误:
ORA-01403:未找到数据
ORA-06512:at“ADDPHONELINE”,第9行
ORA-04088:执行触发'ADDPHONELINE'
时出错
相关表格创建如下:
val grouped = rdd.reduceByKey(math.max(_, _))
答案 0 :(得分:1)
您的触发器基于表phoneNumber
上的插入和错误"未找到数据"当使用SELECT INTO并且它没有找到要插入的任何信息时抛出。
所以问题必须是这个陈述。
select acctID, primaryNumber into acctNum, primNum
from account A
where A.primaryNumber = :new.primaryNumber;
您确定此触发器处于活动状态时:new.primaryNumber
表中是否存在account
?
也许你只是在插入完成后才填充account
表?
答案 1 :(得分:0)
根据您发布的错误说明,以下查询不返回任何行。您的:new.primaryNumber不正确或帐户表中没有匹配的记录。
Begin
select acctID, primaryNumber into acctNum, primNum
from account A
where A.primaryNumber = :new.primaryNumber;
exception when others then
insert your favorite logging method here logging out your :new.primaryNumber
end;
答案 2 :(得分:0)
我在这里向您展示当dbms_random给出一个值(NEWusageID_new)时会发生什么,该值存在于用法中:
DECLARE
i NUMBER;
BEGIN
SELECT 15 INTO i FROM DUAL
MINUS
SELECT 15 FROM DUAL;
END;
ORA-01403: no data found
ORA-06512: in line 4
改为使用序列。