oracle查triger失效,Oracle触发器错误,无效标识符

我有以下完美工作的DML语句,我试图使它成为触发器,但它不起作用。

DML语句

UPDATE HOLIDAY_RESERVATION R SET SUBTOTAL =

NVL((SELECT F.FLI_PRICE FROM FLIGHT F WHERE F.FLI_ID = R.IN_FLIGHT_ID), 0) * NVL(R.IN_FLIGHT_SEATS_NO,0) +

NVL((SELECT F.FLI_PRICE FROM FLIGHT F WHERE F.FLI_ID = R.OUT_FLIGHT_ID), 0)* NVL(R.OUT_FLIGHT_SEATS_NO,0) +

NVL((SELECT AC.ACC_PRICEPN FROM ACCOMMODATION AC WHERE AC.ACC_ID = R.ACC_ID), 0);触发器语句

CREATE OR REPLACE TRIGGER HR_SUBTOTAL

BEFORE INSERT OR UPDATE ON HOLIDAY_RESERVATION

FOR EACH ROW

BEGIN

SELECT

NVL((SELECT F.FLI_PRICE FROM FLIGHT F WHERE F.FLI_ID = :NEW.IN_FLIGHT_ID), 0) * NVL(R.IN_FLIGHT_SEATS_NO,0) +

NVL((SELECT F.FLI_PRICE FROM FLIGHT F WHERE F.FLI_ID = :NEW.OUT_FLIGHT_ID), 0) * NVL(R.OUT_FLIGHT_SEATS_NO,0) +

NVL((SELECT AC.ACC_PRICEPN FROM ACCOMMODATION AC WHERE AC.ACC_ID = :NEW.ACC_ID), 0)

INTO :NEW.SUBTOTAL

FROM DUAL;

END;

Errors for TRIGGER HR_SUBTOTAL:

LINE/COL ERROR

-------- ----------------------------------------------------------------

2/4 PL/SQL: SQL Statement ignored

4/92 PL/SQL: ORA-00904: "R"."OUT_FLIGHT_SEATS_NO": invalid identifier这个错误必须在乘法位中,因为如果我除掉了乘法位,它可能会用括号括起来,或者用另一个选择符号。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值