2

(1)product_warehouseと (2) の2 つのテーブルがありReturn_Vendor Invoiceます。テーブルの値に応じて、 quantityin product_warehouseby トリガーを更新する必要があります。Return_Vendor InvoicewhereItem_codeは両方のテーブルで一意のキーです。

たとえば、product_warehouse に 3 個の数量が含まれており、店主がベンダーに 1 個の数量を返品した場合、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 自体を更新することはできません。これは、update ステートメントがそれを考慮していないためです。それは簡単に解決できますが、それが要件に含まれているかどうかはわかりません。私は通常、そのような値を変更しませんが、アイテムを削除して別のアイテムに新しい行を追加します。

数量の更新は正常に機能します。数量を更新すると、新旧の差が計算され、その差を使用して倉庫の在庫数量が変更されます。

于 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 に答える