Postgres:更新前触发器
Postgres: BEFORE UPDATE trigger
描述
在我们的环境 (Postgres 9.3) 中,我们对日期使用了广泛的分区。此外,我们使用重定向将 'main' table 中的 INSERT
重定向到相应的子 table (因此请注意,主要 table 中实际上没有数据],所有数据都在子 tables.
问题
其中一个进程正在主进程 table 上执行 UPDATE
,但我如何才能将其中一个 UPDATE
重定向到正确的子进程 table?
例如,如果我说一些简单的话:
UPDATE transactions SET text = 'new text' WHERE id = 1 AND date = 201601;
我将此 UPDATE
重定向到 transactions_201601
分区?
显然,将您的 UPDATE
查询重定向到正确的 table 并不常见。
通过确保 INDEX
es 以正确的方式设置,您可以确保 UPDATE
在正确的分区 table 上执行。所以总而言之,设置正确的索引就是解决方案。
描述
在我们的环境 (Postgres 9.3) 中,我们对日期使用了广泛的分区。此外,我们使用重定向将 'main' table 中的 INSERT
重定向到相应的子 table (因此请注意,主要 table 中实际上没有数据],所有数据都在子 tables.
问题
其中一个进程正在主进程 table 上执行 UPDATE
,但我如何才能将其中一个 UPDATE
重定向到正确的子进程 table?
例如,如果我说一些简单的话:
UPDATE transactions SET text = 'new text' WHERE id = 1 AND date = 201601;
我将此 UPDATE
重定向到 transactions_201601
分区?
显然,将您的 UPDATE
查询重定向到正确的 table 并不常见。
通过确保 INDEX
es 以正确的方式设置,您可以确保 UPDATE
在正确的分区 table 上执行。所以总而言之,设置正确的索引就是解决方案。