我需要帮助来了解是否可以使用触发器自动创建 PostgreSQL 表的分区。
例如,要基于范围分区创建每日分区,然后基于散列分区创建子分区,我将手动创建此脚本,如下所示:
CREATE TABLE source_record_0518 PARTITION OF source_record
FOR VALUES FROM ('2023-05-18T00:00:00') TO ('2023-05-19T00:00:00')
Partition by hash(source_record_uuid);
CREATE TABLE source_record_0518_sub_1 PARTITION OF source_record_0518
FOR VALUES WITH (MODULUS 8, REMAINDER 0)
CREATE TABLE source_record_0518_sub_2 PARTITION OF source_record_0518
FOR VALUES WITH (MODULUS 8, REMAINDER 1)
不,您不能使用触发器创建分区,至少不能使用从将数据插入表的语句触发的触发器。您将必须使用您选择的作业调度程序来创建分区。使用每日分区方案,这应该很简单。
有提供自动分区创建的工具,最好的可能是 pg_partman。