PSQL使用触发器将行中的值添加到同一行中的另一个值

时间:2017-01-16 12:16:11

标签: triggers psql

我有一个包含三列的测试表(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.谢谢

1 个答案:

答案 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传递数据,我很高兴确保错误被​​捕获和删除。