我有一个包含三列的测试表(file,qty,qty_total)。我将输入这样的多行,例如insert into test_table (file,qty) VALUS (A,5);
。我想要的是提交是一个触发器从qty获取值并将其添加到qty_total。正如将要发生的那样,该值将会更新,如此示例所示。 Update test_table set qty = 10 where file = A;
所以qty_total现在是15.谢谢
答案 0 :(得分:0)
管理自己解决这个问题。我创建了一个触发函数`CREATE FUNCTION public.qty_total() RETURNS触发器 LANGUAGE' plpgsql' 成本100.0 挥发性而非防漏 AS $ BODY $
BEGIN
IF TG_OP = 'UPDATE' THEN
NEW."total" := (OLD.total + NEW.col2);
RETURN NEW;
ELSE
NEW."total" := NEW.col2;
RETURN NEW;
END IF;
END;
$ BODY $;
ALTER FUNCTION public.qty_total()
postgres的所有者;这是由触发器CREATE TRIGGER qty_trigger
BEFORE INSERT OR UPDATE
ON public.test
FOR EACH ROW
EXECUTE PROCEDURE qty_total();
调用的,现在当我插入一个新的代码和值时,该值被复制到总数,当它被更新时,该值被添加到总数中,我有了新的qty_total。这可能没有最好的错误捕获,但由于我从PHP传递数据,我很高兴确保错误被捕获和删除。