[英]sql trigger functions - Error “returned more than one row”
我使用 pgadmin 創建了一個 postgresql 數據庫。
我需要一個處理新購買的觸發器/函數:
purchases_ait
通過添加到purchases
觸發; 在將采購添加到purchases
表之前檢查庫存,如果不足則引發異常; 如果沒有例外,則從inventory
中減去已售數量並將其添加到purchases
中。
Purchases.ait
拋出錯誤消息: more than one row is returned
。 請告訴我為什么會發生這種情況。 我認為這可能與邏輯順序有關,例如 if/then 和/或 begin/end 語句。 但我一直無法弄清楚。 非常感謝幫助!
Purchases_ait:(原創create function
碼,觸發碼)
CREATE FUNCTION purchases_ait()
RETURNS TRIGGER
LANGUAGE PLPGSQL
AS
$$
BEGIN
IF NEW.quantity > quantity
FROM public.inventory THEN
RAISE EXCEPTION 'We do not have that much of that item left.';
END IF;
UPDATE public.inventory
SET quantity = quantity - NEW.quantity
WHERE item_id = NEW.item_id;
RETURN NEW;
END;
$$
--trigger code --
CREATE TRIGGER purchases_ait
AFTER INSERT
ON public.purchases
FOR EACH ROW
EXECUTE PROCEDURE purchases_ait()
我讓它工作了。 這兩個問題是:
BEFORE
而不是AFTER
functionFOR EACH STATEMENT
而不是FOR EACH ROW
應用程序
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.