create or replace trigger Tri_Storage
before insert on TBL_VP_MISSED
for each row 
begin 
    select SEQ_STORAGE.nextval into :new.id from TBL_VP_MISSED;
end; insert 一条数据的时候报错。
错误信息:
-------------------------------ORA-01422:实际返回的行数超出请求的行数
ORA-06512:在“YIMENG.TRI_STORAGE”,line2
ORA-04088:触发器“YIMENG.TRI_STORAGE”执行过程中出错----------------------

解决方案 »

  1.   

    select SEQ_STORAGE.nextval into :new.id from TBL_VP_MISSED;
    这条语句返回多个值吧,你这个不需要触发器啊,添加的时候直接用序列就可以了
      

  2.   

    select SEQ_STORAGE.nextval into :new.id from TBL_VP_MISSED 你接个where条件限制一下
    :new.id值的个数...试试看.
      

  3.   


    select SEQ_STORAGE.nextval into :new.id from TBL_VP_MISSED;换成 from dual;
      

  4.   


    from dual ? dual 只是代表一个表名称吧。TBL_VP_MISSED 就是我的表明呀。
    insert(a,b,c) values('--a','--b','--c') ;   就是这里我不行写ID,让它自增.
      

  5.   


    from dual ? dual 只是代表一个表名称吧。TBL_VP_MISSED 就是我的表明呀。
    insert(a,b,c) values('--a','--b','--c') ;   就是这里我不行写ID,让它自增.
      

  6.   


    select SEQ_STORAGE.nextval into :new.id from TBL_VP_MISSED; 这个就是在插入前对TBL_VP_MISSED的id
    赋值的。而TBL_VP_MISSED里面肯定返回的是多行
      

  7.   

    这行就行了,和你用哪个表没有关系select SEQ_STORAGE.nextval into :new.id from dual;
      

  8.   

    select SEQ_STORAGE.nextval into :new.id from dual;
      

  9.   

    create or replace trigger Tri_Storage
    before insert on TBL_VP_MISSED
    for each row  
    begin  
      select SEQ_STORAGE.nextval into :new.id from TBL_VP_MISSED;
    end;  
    你要这样用,一定要保证select * from TBL_VP_MISSED where rownum<2 只返回一条记录。
    剩下的自己想把。
    select SEQ_STORAGE.nextval into :new.id from TBL_VP_MISSED;你的TBL_VP_MISSED表里面肯定有多条数据,所以才会报出 实际返回的行数超出请求的行数 的错误。
    有两个方法修改:
    1.select SEQ_STORAGE.nextval into :new.id from TBL_VP_MISSED;
    修改为
    select SEQ_STORAGE.nextval into :new.id from TBL_VP_MISSED where rownum<2;
    2.select SEQ_STORAGE.nextval into :new.id from TBL_VP_MISSED;
    修改为
    select SEQ_STORAGE.nextval into :new.id from dual