我试图为数据库编写触发器但感觉有点丢失。这就是我想要触发器做的事情:当对货物进行了更改时(所以当一个新物品已经发货时)我想通过减去1来改变另一种称为库存的关系中的价值库存,以便这两种关系相关。
有什么想法吗?提前谢谢!
答案 0 :(得分: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;