[英]postgres function for loop
我有一個orders
表和一個order_products_items
表。 order_products_items
具有以下字段:
我正在嘗試通過before insert trigger
function 在orders
表中創建一個 calculated_field: calculated_total_products_price
,它將通過遍歷與訂單相關的所有order_products_items
並將數量乘以每個訂單商品的價格來計算總訂單價格。
這是我這樣做的失敗嘗試:
CREATE OR REPLACE FUNCTION public.fn_trigger_total_order_price()
RETURNS trigger
LANGUAGE plpgsql
AS $function$
declare total float := 0.0;
product record;
BEGIN
FOR product IN
SELECT itm.price, itm.quantity
FROM order_products_items itm
INNER JOIN orders ord
ON itm.order_id = ord.id
WHERE ord.id = NEW.id
LOOP
total = total + (product.price * product.quantity);
END LOOP;
NEW.calculated_total_products_price := total;
RETURN NEW;
END;
$function$
;
觸發器看起來像這樣:
CREATE TRIGGER fn_trigger_total_order_price BEFORE INSERT ON public.orders
FOR EACH ROW EXECUTE PROCEDURE fn_trigger_total_order_price();
不知何故,我沒有得到任何錯誤,但結果總是得到 0。
我錯過了什么嗎? 還是有更好/更有效的方法來解決這個問題?
非常感謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.