我试图在
Postgresql 9.5中像这样在我的表的列上创建一个触发器:
CREATE OR REPLACE FUNCTION app.combo_min_stock() RETURNS TRIGGER AS $combo_sync$ DECLARE combo_product_ids INTEGER[] := array(SELECT combo_product_map.combo_productid FROM app.combo_product_map WHERE combo_product_map.productid=NEW.productid); DECLARE comboid INTEGER; BEGIN -- UPDATE MINIMUM STOCK FOR COMBO SKUS -- FOREACH comboid IN ARRAY combo_product_ids LOOP UPDATE app.inventory SET good_stock = combo_data.min_good_stock,bad_stock = combo_data.min_bad_stock,to_be_updated = true FROM (SELECT product.productid,MIN(inventory.good_stock) as min_good_stock,MIN(inventory.bad_stock) as min_bad_stock FROM app.product,app.inventory,app.combo_product_map WHERE product.is_combo=true AND product.productid=comboid AND product.productid=combo_product_map.combo_productid AND combo_product_map.productid=inventory.productid GROUP BY product.productid) AS combo_data WHERE combo_data.productid=inventory.productid; END LOOP; END; $combo_sync$ LANGUAGE plpgsql; ALTER FUNCTION app.combo_min_stock() OWNER TO postgres; CREATE TRIGGER combo_sync AFTER UPDATE OF good_stock ON app.inventory FOR EACH ROW EXECUTE PROCEDURE app.combo_min_stock();
当我尝试在库存表中编辑good_stock列的值时,它会抛出这个错误:
An error has occurred:
ERROR: control reached end of trigger procedure without RETURN
CONTEXT: PL/pgsql function app.combo_min_stock()
这个查询有什么问题?
试试这个:
END LOOP; RETURN NULL;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。