-2

这是在商品出售时触发更改库存表的语法正确吗?

create trigger tr_stockquant
on tbl_ticket for insert, update, delete as $$
begin
update s set stockQty = s.stockQty - isnull(i.Qty,0) + isnull(d.Qty,0)
from tbl_stock s
left join inserted i
on s.itemID = i.itemID
left join deleted d on itemID = s.itemID
end;
$$ language plpgsql;
4

1 回答 1

0

您将需要首先创建一个适当的函数,然后遵守CREATE TRIGGER语句的语法和语义。

所以首先你创建一个函数:

CREATE FUNCTION alter_stock_table() RETURNS TRIGGER AS $$
    BEGIN
        IF tg_op = 'INSERT' THEN
            ...
        ELSIF tg_op = 'UPDATE' THEN
            ...
        ELSIF tg_op = 'DELETE' THEN
            ...
        ENDIF
$$ LANGUAGE PLPGSQL;

然后你可以创建一个触发器:

CREATE TRIGGER alter_stock_table_trigger
    AFTER INSERT, UPDATE, DELETE ON tbl_ticket
    FOR EACH ROW
    EXECUTE PROCEDURE alter_stock_table();

Google 将帮助您找到更多关于如何定义函数的示例。例如,这个页面给出了一个简单的介绍。

于 2013-03-26T15:46:07.120 回答