【发布时间】:2017-12-24 04:47:07
【问题描述】:
我有两张桌子。表 x 和表 y。表 x 每天都会更新。我希望在表 x 中插入新数据后立即更新表 y。表 y 包含表 x 中每天所有更新的汇总值。 日期是日期类型,两列的其余部分是真实类型。 table_x 可以每天更新,table_y 应该会自动更新。
表x:
Date Sales product
12/12/2017 4000 2
12/12/2017 3000 1
12/12/2017 2000 1
12/12/2017 5000 3
11/12/2017 1000 3
11/12/2017 2000 4
表y(待更新如下图):
Date Sales product
12/12/2017 14000 7
11/12/2017 3000 7
我编写了如下所示的触发器函数,但它更新每个项目而不是聚合值。
CREATE OR REPLACE FUNCTION public.rec_insert_table_y()
RETURNS trigger AS
$BODY$
BEGIN
INSERT INTO table_y ("Date","Sales","product")
SELECT NEW."Date",(sum(NEW."Sales")),(sum(NEW."product"))
GROUP BY NEW."Date";
RETURN NEW;
触发功能:
CREATE TRIGGER insert_into_table_y
AFTER INSERT
ON public.table_x
FOR EACH ROW
EXECUTE PROCEDURE public.rec_insert_table_y();
【问题讨论】:
-
我在任何地方都看不到您的触发器定义、表定义和 Postgres 版本。而且您的功能也不完整。还缺少:基本信息:可以在表
x中插入新产品吗?或者只是现有产品的新行?请edit完成信息。 -
@Erwin:按照您的建议更新定义。我的 Postgres 版本是“PostgreSQL 9.5.3”。是的,每天都会在 Table_x 中插入新产品。
-
我的这部分评论没有得到答复:
Can new products be inserted in table x? or just new rows for existing products?
标签: postgresql