gpt4 book ai didi

postgresql - 触发错误 : Record "new" is not assigned yet

转载 作者:行者123 更新时间:2023-11-29 11:24:20 25 4
gpt4 key购买 nike

我在 postgresql 中有以下代码:

CREATE OR REPLACE FUNCTION update_category() RETURNS trigger AS $newProduct$
BEGIN
UPDATE category SET product_count = product_count + 1 WHERE cat_id = NEW.cat_id;
INSERT INTO notification (content, type, p_id) VALUES('new product', 1, NEW.p_id);
RETURN NEW;
END;
$newProduct$ LANGUAGE plpgsql;

CREATE TRIGGER update_cat AFTER INSERT ON product
EXECUTE PROCEDURE update_category();

在向产品中插入一条记录后,出现错误:

[2017-03-20 16:05:05] [55000] ERROR: record "new" is not assigned yet
[2017-03-20 16:05:05] Detail: The tuple structure of a not-yet-assigned record is indeterminate.
[2017-03-20 16:05:05] Where: SQL statement "UPDATE category SET product_count = product_count + 1 WHERE cat_id = NEW.cat_id"
[2017-03-20 16:05:05] PL/pgSQL function update_category() line 3 at SQL statement

我四处寻找解决方案,但我只发现错误是因为

FOR EACH STATEMENT

被用来代替

FOR EACH ROW

鉴于我只是执行了一次该过程,因此该解决方案不适用于我的情况。

感谢您的帮助!

最佳答案

解决方案确实是为每一行添加:

CREATE TRIGGER update_cat AFTER INSERT ON product
FOR EACH ROW EXECUTE PROCEDURE update_category();

我假设 FOR EACH ROW 意味着为产品中的每一行调用一次过程,而不是为插入的每一行调用一次。

关于postgresql - 触发错误 : Record "new" is not assigned yet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42913201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com