2012-03-14 15 views
0

product_idtotal_countのインベントリテーブルを作成しました。購入テーブル(purchase_idsupplier_idproduct_idprice, quantity)に購入を入力すると、在庫テーブルのtotal_countが更新されます。インベントリテーブルのtotal_countのデフォルト値は0です。トリガーでカウント/数量を別のテーブルに追加して1つのテーブルのTotal_count列を更新する

例えば購入時(サプライヤ、充電器、価格、25)に在庫を更新する必要があります(Charger、25)。

私はそれを行うことができません。ここに私のコード:

create or replace trigger trg_update_inventory 
after insert on supplier_product 
for each row 
begin 
    update inventory set total_count=total_count+ quantity where ..... 

私はこの時点で立ち往生しています。トリガーが購入テーブルから数量を取得し、合計残高を更新する方法を教えてください。

答えて

2
CREATE OR REPLACE TRIGGER trg_update_inventory 
    AFTER INSERT ON supplier_product 
    FOR EACH ROW 
BEGIN 
    UPDATE inventory 
    SET total_count = total_count + :new.quantity 
    WHERE product_id = :new.product_id 
END; 

が有効です。しかし、システム・アーキテクチャーの観点からは、そのようなロジックをトリガーに入れるのではなく、INSERTPURCHASE表に、UPDATEINVENTORY表に両方とも格納するストアード・プロシージャーmake_purchaseを使用する方がはるかに良いでしょう。

関連する問題