postgresql - 不能在 postgresql 中将声明性分区与继承结合起来
问题描述
我们有几个表必须继承另一个表。该计划是能够使用公共属性在不同表之间执行查询,但也可以对父表执行查询以进行分析。除此之外,可能需要编辑父表和子表中的数据。子表已经拥有所有必要的列,并且我们成功地继承了其中的几个。
现在我们遇到了一个按年份和季度分区的大表(声明性分区)的问题:
[42809]: ERROR: cannot change inheritance of a partition.
另一种选择是使用联合,但如果没有继承,我们将需要创建可编辑视图或类似的东西,并在每次我们需要另一个分区表时更改它们......或者我们可能只切换到继承,只是出于兼容性原因.
我已经尝试过继承分区 - 效果不佳。
有任何想法吗?
解决方案
继承树中不能有分区或分区表,因为分区在“底层”使用继承。
“A”分区表听起来像是一个表。
在这种情况下,您可以使用结合了继承父级和分区表的视图:
CREATE VIEW world AS
SELECT * FROM parent_table
UNION ALL
SELECT * FROM partitioned_table;
是的,当您想要另一个分区表时,您必须调整该表,但这种情况是否一直发生,所以修改视图太麻烦了?
如果是,您可以编写一个事件触发器,在创建分区表时修改视图。
推荐阅读
- javascript - 数组破坏时获得未定义不是函数
- excel - 搜索数据列表,如果找到多个条件之一,则为单元格 x VBA 赋值
- python - 在Python中根据条件替换图像像素颜色
- octave - 使用矩阵数据实体编写多元目标函数
- python - Django 模板化邮件“dict”对象没有属性“get_host”
- angularjs - Angularjs自动完成ng-click不起作用
- scala - 在 Java 中创建 spring 注释时抑制 scaladoc 实现警告
- python - 从终端运行时的 Omxplayer-wrapper 问题
- amazon-web-services - 将 SSL 证书应用于 AWS EC2 Ubuntu 实例
- swift - 如何在 Swift 中获取用户的当地时间?