ORA-01403: 未从 INSERT 触发器中找到数据

问题描述

我正在尝试使用 oracle 11g 第 2 版配置数据库,我在其中创建了一个名为 UTILITY 的表:

  create table utility
  (
    u_id varchar2(12),name varchar2(20)NOT NULL,status varchar2(10),paid_amount number(7,2)NOT NULL,month varchar2 (2) NOT NULL,year varchar2 (4) NOT NULL,company varchar2(20)NOT NULL,constraint u_id_pk primary key(u_id)
 );

我也创建了一个序列

CREATE SEQUENCE  "ASMADB"."UTILITY_ID_SEQ"  MINVALUE 1 MAXVALUE 9999999999 
INCREMENT BY 1 START WITH 1 CACHE 10 NOORDER  NOCYCLE ;

和表的触发器:

create or replace trigger uility_id
before insert on utility
for each row
begin
    select to_char('U')||'-'||lpad(utility_id_seq.nextval,9,'0')
    into :new.u_id  
    from utility;
end;

但是每当我尝试在实用程序中插入值时都会发生以下错误:

从第 1 行开始出错
插入效用值 (' ','Electricity Bill','due',5340.59,to_char(to_date('12/06/2020','dd/mm/yyyy'),'mm'),to_char(to_date(') 12/06/2020','yyyy'),'Rakib Electricity')
错误报告
ORA-01403: 未找到数据
ORA-06512:在“ASMADB.UILITY_ID”,第 2 行
ORA-04088: 执行触发器 'ASMADB.UILITY_ID' 期间出错


如果有人帮助我解决此错误,将会非常有帮助。

  • 注意:表实用程序是空的。

解决方法

不是那样的;简单

create or replace trigger uility_id
  before insert on utility
  for each row
begin
  :new.u_id := 'U-' || lpad(utility_id_seq.nextval,9,'0');
end;

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...