在Oracle中生成触发器逻辑时出错



我们在Sales_order和Line_item之间有1:N的关系。在关系中,每当将新项目插入Line_item表时,sales_order表的"total"属性都需要更新。也就是.Sales_Order.total=sum(所有line_item.t小计(

编写一个触发器,自动更新LINEITEM表上INSERT或UPDATE的line_item.subtotal value by quantity*actual_price。

我正在尝试编写触发器逻辑,但没有成功。检查我的逻辑,我做错了什么。。。

CREATE OR REPLACE TRIGGER create_subtotals  
BEFORE INSERT OR UPDATE ON LINE_ITEM 
for each row
DECLARE 
new_subtotal  number;
BEGIN
SELECT subtotal INTO new_subtotal FROM LINE_ITEM WHERE order_id = :new.order_id;
:new.subtotal := :new.quantity * new.actual_price 
END;
/

正确的触发器应该是-

CREATE OR REPLACE TRIGGER create_subtotals  
BEFORE INSERT OR UPDATE ON LINE_ITEM 
FOR EACH ROW
DECLARE 
new_subtotal  number;
BEGIN
UPDATE sales_order
SET total = total + :new.subtotal
<YOUR WHERE CONDITION ACCORDINGLY>
END;
/

最新更新