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”执行过程中出错----------------------
解决方案 »
- inner join和普通的from A, B where 的区别
- MicroStrategy连接oracle时odbc出现connection dead, 怎么办?
- oracle连接问题!
- 求助!创建物化视图出错
- oracle中要查询某个时间段(年月日)内的记录,SQL语句怎么写最方便?
- SQL Server通过链接服务器如何调用ORACLE的存储过程
- 在pb向oracle过程传date型参数时,报无效月份错误,调用过程错误!!!望指点
- 两个应用系统的后台数据库能够用一套数据库系统吗?
- 取数据库中ID号最大的一条记录的全部字段内容?
- 请帮忙看看是什么错
- oracle存储过程调用问题。
- VS调用ORACLE存储过程
这条语句返回多个值吧,你这个不需要触发器啊,添加的时候直接用序列就可以了
:new.id值的个数...试试看.
select SEQ_STORAGE.nextval into :new.id from TBL_VP_MISSED;换成 from dual;
from dual ? dual 只是代表一个表名称吧。TBL_VP_MISSED 就是我的表明呀。
insert(a,b,c) values('--a','--b','--c') ; 就是这里我不行写ID,让它自增.
from dual ? dual 只是代表一个表名称吧。TBL_VP_MISSED 就是我的表明呀。
insert(a,b,c) values('--a','--b','--c') ; 就是这里我不行写ID,让它自增.
select SEQ_STORAGE.nextval into :new.id from TBL_VP_MISSED; 这个就是在插入前对TBL_VP_MISSED的id
赋值的。而TBL_VP_MISSED里面肯定返回的是多行
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