gpt4 book ai didi

postgresql - 旧记录未在更新语句中分配

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

我在更新时创建了一个触发器,它应该插入到我的表 preishist 中。

//preishist
CREATE TABLE preishist (
updatenr varchar(4),
preis numeric(8,2),
pnr varchar(4),
gueltigab date,
PRIMARY KEY(updatenr));

//produkt
CREATE TABLE produkt(
pnr varchar(4),
name varchar(4),
preis numeric(8,2),
gultigab date,
PRIMARY KEY(pnr));

//Trigger
CREATE TRIGGER trigger AFTER UPDATE ON produkt FOR EACH STATEMENT EXECUTE
PROCEDURE triggerfunc();


//Triggerfunc
CREATE FUNCTION triggerfunc RETURNS TRIGGER AS '
begin
IF TG_OP = 'UPDATE' THEN
IF OLD.preis <> NEW.preis AND OLD.gueltigab < NEW.gueltigab THEN
INSERT INTO preishist (preis,pnr,gultigab) VALUES (NEW.preis, NEW.pnr,NEW.gueltigab);
end IF;
end IF;
end;

当我尝试更新产品时收到错误消息

Record old is not assigned yet.

我很高兴能得到所有帮助。

最佳答案

OLDNEW 仅在 级触发器中可用。您将触发器定义为语句级触发器。

要能够使用 OLDNEW 使用:

CREATE TRIGGER trigger 
AFTER UPDATE ON produkt
FOR EACH <b>ROW</b> --<< here
EXECUTE PROCEDURE triggerfunc();

关于postgresql - 旧记录未在更新语句中分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51011079/

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