-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

最初に適切な関数を作成してから、 CREATETRIGGERステートメントの構文とセマンティクスを順守する必要があります。

したがって、最初に関数を作成します。

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 に答える