使用postgresql继承和外键约束?

时间:2010-09-09 00:14:51

标签: database database-design postgresql inheritance

在我们的项目中,我们从PostgreSQL数据库的继承功能中受益匪浅!

我们为不同的机构实施计划的动态创建。这种结构允许我们解决在批量表(没有分区)的情况下立即发生的许多安全问题。

我们遇到的唯一问题是保证数据库的完整性,通常(在没有继承的结构意义上)是由外键约束实现的。

由于PostgreSQL有一定的局限性(见inheritance caveats),我们不得不维护表格结构而不用约束。

是否有可能“模拟”,即使假设相对性能下降,通过触发器和/或检查确定外键约束?

非常感谢任何建议! 谢谢。

2 个答案:

答案 0 :(得分:4)

唯一有问题的情况是您从一个共享的表引用到parent表。您可以使用共享表parent_ids使用一列id int primary key解决此问题。您必须使用子表上的触发器维护此表,但它非常简单 - 在插入时插入parent_ids,在删除时从中删除,在更新时更新,更改id

然后,您将引用此parent表,而不是引用您的parent_ids表。这将确保参考完整性,并且您不会在2个子表中发生冲突id

它会将使用过的ID泄漏给任何用户,但不允许访问任何其他数据。

答案 1 :(得分:0)

在大多数情况下,应该可以在表上编写常规触发器来验证数据修改时的关系。