2

我有 2 张桌子 (1)product_warehouse和 (2) Return_Vendor Invoice。我必须根据Table的值更新quantityin by trigger。where是两个表中的唯一键。product_warehouseReturn_Vendor InvoiceItem_code

例如,如果 product_warehouse 包含 3 个数量,并且店主将 1 个数量返回给供应商,那么它应该是 2 个Product_warehouse。更新查询也可以接受。

4

2 回答 2

2
create or replace trigger tiuda_return_vendor after insert or update or delete
on return_vendor is
begin
  update product_wherehouse
  set
    quantity = quantity - (:new.quantity - nvl(:old.quantity, 0)
  where
    item_code = nvl(:new.item_code, :old.item_code);
end;

此触发器在大多数情况下都有效。您可以插入更新或删除返回行。

唯一的事情是:更新时,您不能更新 item_code 本身,因为更新语句没有考虑到这一点。你可以很容易地解决这个问题,但我不知道它是否符合你的要求。我通常不会像那样更改值,而是删除该项目并为不同的项目添加新行。

更新数量工作正常。如果您更新数量,则会计算新旧之间的差异,并使用该差异来修改仓库中的库存数量。

于 2012-11-29T09:22:37.183 回答
1
create or replace
TRIGGER "WR_RETURN_INVOICE_UPDATE_TRG" 
AFTER UPDATE ON RETURN_INVOICE
FOR EACH ROW
  BEGIN
    UPDATE PRODUCT_WAREHOUSE
    SET QUANTITY=QUANTITY-:OLD.QUANTITY
    WHERE ITEM_CODE=:OLD.ITEM_CODE;   
END WR_RETURN_INVOICE_UPDATE_TRG;



Try this one it will works. 
于 2012-11-30T06:33:12.070 回答