![]() |
1
3
一定要试试触发器。 如果你认为你想要实现一个规则,不要(唯一想到的例外是可更新的视图)。看到这个 great article by depesz 更多的解释。 实际上,Postgres只支持在事物的阅读端进行分区。您将自己设置插入分区的方法——在大多数情况下是触发。根据需要和应用程序,有时可以更快地教会应用程序直接插入到分区中。 当从分区表中选择时,您确实可以选择…哪里。。。在主表上,只要检查约束设置正确(在示例中),并且约束的排除参数设置正确。 8.4:
对于& 8.4;
尽管如此,我真的很喜欢Postgres的方式,并且经常自己使用它。 |
![]() |
2
1
基本上:子表中的插入必须显式完成(创建触发器,或者通过在查询中指定正确的子表)。但是分割 对于选择是透明的(考虑到这个模式的存储和索引优势),这就是重点。 (此外,因为分区表是继承的, 模式继承自父级,因此一致性 被强制执行)。 |
![]() |
3
1
触发器显然比规则好。 今天,我已经开始对物化视图表进行分区,并遇到了触发器解决方案的问题。 为什么? 我正在使用返回,当前解决方案返回空:) 但这里有一个适合我的解决方案-如果我错了,请纠正我。 1。我有3个表,其中插入了一些数据,有一个视图(我们称之为viewfoo),其中包含 需要具体化的数据。 2。插入到最后一个表中具有插入到物化视图表中的触发器 通过插入MatviewTable,从viewfoo中选择*,其中recno=new.recno; 这很好,我用的是返回的recno;(recno是序列类型sequence)。 物化视图(表)需要分区,因为它很大,并且 根据我的测试,在这种情况下,选择它至少要快x10。 分区问题: *当前触发器解决方案返回空-因此我不能使用返回的recno。 (当前触发器解决方案=在DEPESZ页上解释的触发器)。 解决方案: 我已经将第三个表的触发器更改为不插入物化视图表(该表是分区表的父表),而是创建了新的触发器来插入 直接从第三个表分区表,该触发器返回new。 物化视图表自动更新,返回recno工作正常。 如果这对任何人都有帮助,我会很高兴的。 |
|
Johnny T · 基于当前值的SQL合并表[重复] 5 月前 |
![]() |
Peter Schofield · 类型转换Postgresql 5 月前 |
![]() |
Kevin Smeeks · Pyspark JDBC分区读取 5 月前 |
![]() |
Andrus · 如何在sql中查找第二个匹配项 5 月前 |