小编eCo*_*Evo的帖子

在普通 SQL 中访问触发器函数中的旧/新表值

我正在尝试构建一个触发器函数,以便在任何项目发生更改时自动更新父订单值。

这是我创建的:

CREATE OR REPLACE FUNCTION update_totals() RETURNS void AS $$
    UPDATE orders SET
       total_fees = (SELECT SUM(fees) FROM order_items WHERE order_id = OLD.order_id),
       total_profit = (CASE WHEN total_cost IS NOT NULL THEN total - total_tax - total_cost - (SELECT SUM(fees) FROM order_items WHERE order_id = OLD.order_id) ELSE NULL END)
    WHERE id = OLD.order_id;
$$
LANGUAGE SQL;

CREATE TRIGGER update_totals AFTER INSERT 
OR UPDATE OF fees
ON order_items INITIALLY DEFERRED
FOR EACH ROW
WHEN ( OLD.* IS DISTINCT FROM NEW.* …
Run Code Online (Sandbox Code Playgroud)

postgresql functions postgresql-9.6

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

functions ×1

postgresql ×1

postgresql-9.6 ×1