Oracle 我希望ORA-01422:exact fetch返回的行数超过请求的行数。问题是什么?

Oracle 我希望ORA-01422:exact fetch返回的行数超过请求的行数。问题是什么?,oracle,oracle-apex,Oracle,Oracle Apex,我希望ORA-01422:exact fetch返回的行数超过请求的行数唯一可以引发太多行的语句是 create or replace trigger "AGE_TRIGGER4" BEFORE insert on CLIENT for each row DECLARE age DATE; BEGIN select DATA into age from CLIENT where "FIO" = :new."FIO"; if SYSDAT

我希望ORA-01422:exact fetch返回的行数超过请求的行数

唯一可以引发太多行的语句是

create or replace trigger "AGE_TRIGGER4"
BEFORE
insert on CLIENT
for each row
DECLARE
age DATE;
BEGIN
select DATA into age from CLIENT where "FIO" = :new."FIO";
if SYSDATE-age > 27394 OR age is NULL Then
raise_application_error(-20001,'...');
end if;
end;
这意味着
client
表中有多行具有相同的
fio
列值。如果这是意料之中的,你应该设法处理它

  • 例如,您可以选择
    max(data)into age
  • 或者,您可以引发异常,通知用户不能使用相同的
    fio
    输入两(或更多)行。不过,您更愿意让数据库来处理它——在该列上创建一个唯一的索引
  • 或者,在
    where
    子句中包含另一列,以进一步限制
    select
    语句返回的值

那么,您收到的错误消息是什么?如果我尝试添加新行,会收到错误“ORA-01422:exact fetch返回的行数超过请求的行数”
select DATA into age from CLIENT where "FIO" = :new."FIO";