Oracle 触发器 exact fetch returns more than requested number of rows

createorreplaceTRIGGERtrBEFOREINSERTONREALESTATEFOREACHROWDECLAREvBUDGETNUMBER(20);vC... create or replace
TRIGGER tr
BEFORE INSERT ON REALESTATE
FOR EACH ROW
DECLARE
vBUDGET NUMBER(20);
vCAPITAL NUMBER(20);
BEGIN
SELECT SUM(BUDGET) into vBUDGET
FROM REALESTATE
WHERE DEVELOPERNAME=:new.DEVELOPERNAME;

SELECT CAPITAL INTO vCAPITAL
FROM DEVELOPERS
WHERE DEVELOPERNAME=:new.DEVELOPERNAME;
IF (vBUDGET+:new.BUDGET)>vCAPITAL THEN
RAISE_APPLICATION_ERROR (-20006,'BUDGET is too large');
END IF;

END tr;
我的理念是:在REALESTATE中插入一行如果在REALESTATE中DEVELOPERNAME相同的BUDGET总和大于DEVELOPERNAME在对应DEVELOPERS表中的CAPITAL值时弹出错误

以上是我的trigger代码,在我向REALESTATE表格插入一行的时候显示上述错误,请大侠指引~
好的...在select into语句当中加入distinct,就ok了...擦自己解决了
展开
 我来答
terrymoone
2015-09-04 · TA获得超过5433个赞
知道大有可为答主
回答量:4520
采纳率:41%
帮助的人:1676万
展开全部
这个肯定是用了select into
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
11号码
2012-05-16 · 超过12用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:26.6万
展开全部
呵呵,恭喜,顶一下
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式