我们在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;
/