如何解决SQL触发更新
大家好,我试图触发一个触发器,以便在每次向Reading添加新行时更新Bill.BillAmmount。 该字段应=(Reading.MeterReading-Reading.LastMeterReading)* Resedent.Rate)
REDEDENT 法案 阅读
是3张桌子 也非常感谢你
AFTER INSERT ON Reading
Begin
UPDATE bill
SET bill.BillAmount = (SELECT (Reading.MeterReading - Reading.LastMeterReading)*Resedent.Rate
FROM Reading,Resedent
WHERE Reading.ReadingID = ReadingID AND Resedent.AccountID = AccountID)
End;
DROP TRIGGER BILLAMOUNT_ON_INSERT; ```
解决方法
在Oracle中,触发器应该引用:NEW
(或者也许是:OLD
)。此外,Oracle在FROM
语句中不支持UPDATE
。
我怀疑您想要这样的东西:
Begin
UPDATE bill b
SET BillAmount = (SELECT (:new.MeterReading - :new.LastMeterReading) * rs.Rate
FROM Resedent rs
WHERE rs.ReadingID = :new.AccountID
)
WHERE b.AccountId = :new.AccountId
End;
但是,如果没有有关您的数据模型的更多信息,很难确切说明您真正想要做什么。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。