我有:
CREATE OR REPLACE FUNCTION aktualizujIloscPodan() RETURNS TRIGGER AS $BODY$ DECLARE n integer; sid integer; BEGIN sid=0; IF (TG_OP='INSERT') THEN sid = NEW."studentID"; ELSIF (TG_OP='DELETE') THEN sid = OLD."studentID"; END IF; n = COALESCE ((SELECT count("studentID") as c FROM "Podania" WHERE "studentID"=sid GROUP BY "studentID"),0); UPDATE "Studenci" SET "licznikpodan" = n WHERE "ID"=sid; END; $BODY$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS triggenPodan ON "Podania"; CREATE TRIGGER triggenPodan AFTER INSERT OR DELETE ON "Podania" EXECUTE PROCEDURE aktualizujIloscPodan();
当我尝试执行:
DELETE FROM "Podania" I get ERROR: record "old" is not assigned yet DETAIL: The tuple structure of a not-yet-assigned record is indeterminate. CONTEXT: PL/pgsql function "aktualizujiloscpodan" line 11 at assignment ********** Błąd ********** ERROR: record "old" is not assigned yet Stan sql:55000 Szczegóły:The tuple structure of a not-yet-assigned record is indeterminate. Kontekst:PL/pgsql function "aktualizujiloscpodan" line 11 at assignment
好像不知道什么是OLD或NEW.我该如何解决?
您需要使用FOR EACH ROW
CREATE TRIGGER triggerPodan AFTER INSERT OR DELETE ON "Podania" FOR EACH ROW EXECUTE PROCEDURE aktualizujIloscPodan();
原文地址:https://www.jb51.cc/postgresql/192633.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。