DBMS:坚持功能

时间:2017-09-05 16:48:59

标签: function

我试图为数据库编写触发器但感觉有点丢失。这就是我想要触发器做的事情:当对货物进行了更改时(所以当一个新物品已经发货时)我想通过减去1来改变另一种称为库存的关系中的价值库存,以便这两种关系相关。

有什么想法吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

oldnew项引用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;