通过存储在不同表中的值对PostgreSQL中的表进行分区

时间:2016-01-27 20:45:29

标签: postgresql

我们正在使用一个分区方案,该方案使用表中的日期字段来确定应该使用的分区,即带有子 foo_y2016m01 的表 foo

这适用于我们更简单的表,但我们正在研究如何处理一些更复杂的表关系以执行相同的分区方式,例如 foo 具有日期字段和 bar foo 中存储相关记录的行ID。 bar 表没有自己的日期字段,但我们仍然希望对表进行分区,使子表遵循相同的格式( bar_y2016m01 )。

是否可以格式化 bar 上的检查约束,以便它可以使用 foo 中的日期字段?

1 个答案:

答案 0 :(得分:1)

答案是:可能。

您可以在check约束中使用表达式,这样您就可以编写一个函数来检查另一个表。但是,它只会在桌面上的更新/更新期间触发,因此数据可能会失去完整性,您必须使用外键或向表bar添加触发器以保持foo正确