【问题标题】:Update sum with trigger使用触发器更新总和
【发布时间】:2021-12-05 20:48:09
【问题描述】:

我想汇总购物篮商品的价格值并将其作为总价插入到付款中。我正在尝试为此使用触发器,但在SET total_price = 附近出现错误。错误消息:预期的表达式,得到“选择”。我该如何处理?

CREATE FUNCTION make_sum() RETURNS TRIGGER
AS $$
    BEGIN
        UPDATE payment
            SET total_price = select sum(price) from basket where basket_id = new.basket_id;
        RETURN NULL;
END;$$ LANGUAGE plpgsql;
CREATE TRIGGER make_sum AFTER INSERT ON basket FOR EACH ROW EXECUTE make_sum()

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    这是更新的版本。我对您的脚本进行了以下更改:

    1. 将选择放在括号内的更新语句中
    2. 在触发器定义中添加了关键字“PROCEDURE”。
    CREATE FUNCTION make_sum() RETURNS TRIGGER
        AS $$
            BEGIN
                UPDATE payment
                    SET total_price = (select sum(price) from basket where basket_id = new.basket_id);
                RETURN NULL;
        END;$$ LANGUAGE plpgsql;
        
    CREATE TRIGGER make_sum
    AFTER INSERT ON basket FOR EACH ROW EXECUTE PROCEDURE make_sum(); 
    

    【讨论】:

    • 程序是做什么的?
    • 您知道这不能使用uuid 作为购物篮ID 的原因吗?该值在付款时一直为 null 并且不更新它:/
    猜你喜欢
    • 2022-01-15
    • 2013-05-24
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多