【发布时间】:2021-02-23 21:22:46
【问题描述】:
假设我有 3 个表 A、B、C 和一个表 D,这样 D 是从以下查询创建的:
SELECT DISTINCT ON (col_a) col_a,col_b FROM A WHERE col_b IS NOT NULL
UNION
SELECT DISTINCT ON (col_a) col_a,col_b FROM B WHERE col_b IS NOT NULL
UNION
SELECT DISTINCT ON (col_a) col_a,col_b FROM C WHERE col_b IS NOT NULL
我希望在插入任何表 A、B 或 C 时更新 D。我想我会使用触发器来做到这一点,但我在网上找不到任何关于如何在插入触发器上重新运行查询的信息。
我想这样做的原因是因为它是一个更大查询中的一个子查询,而这个子查询确实会拖慢查询时间。我希望通过将其存储在一个定期自我更新的表中,可以将查询速度提高到可接受的程度。
【问题讨论】:
-
DISTINCT ON没有ORDER BY是 . . .好麻烦。
标签: sql postgresql triggers