2017-09-05 2 views
1

データベースのトリガーを書き込もうとしていますが、少し失われてしまっています。これは私がトリガしたいものです:出荷が変更されたとき(新しい商品が出荷されたとき)、在庫を別の関係に変更して1を差し引いて、2つの関係相関する。DBMS:関数にスタック

アイデア?前もって感謝します!

+0

私は普通のことに気がつくのは、おそらくこれは後に挿入するのではなく、前に挿入することです。しかし、私はもっと多くの情報が私たちのために必要であると言いました あなたは何が起こっているのかの例を提示し、次にあなたが何をしたいのかの例を提供することができます。 – ttallierchio

答えて

0

oldおよびnewの項目は、shipmentの表を参照してください。ストックフィールドはstockテーブルにあるため、明示的に更新する必要があります。同様に、カウントを取得して有効性を評価したいと思うでしょう。

CREATE FUNCTION decstock() RETURNS trigger as $pname$ 
    qty integer; 

    BEGIN 
     --Get the current count 
     SELECT stk.stock 
     INTO qty 
     FROM stock stk 
     WHERE stk.isbn=old.isbn; 

     --Validate count 
     IF (qty = 0) then 
      raise exception 'There is no stock to ship'; 
     ELSE 
      --Update valid stock 
      UPDATE stock stk 
      SET stk.stock = stk.stock - 1 
      WHERE stk.isbn = old.isbn; 
     END IF; 

     RETURN NEW; 
    END; 

$pname$ LANGUAGE plpgsql; 
関連する問題