在我们的项目中,我们从PostgreSQL数据库的继承功能中受益匪浅!
我们为不同的机构实施计划的动态创建。这种结构允许我们解决在批量表(没有分区)的情况下立即发生的许多安全问题。
我们遇到的唯一问题是保证数据库的完整性,通常(在没有继承的结构意义上)是由外键约束实现的。
由于PostgreSQL有一定的局限性(见inheritance caveats),我们不得不维护表格结构而不用约束。
是否有可能“模拟”,即使假设相对性能下降,通过触发器和/或检查确定外键约束?
非常感谢任何建议! 谢谢。
答案 0 :(得分:4)
唯一有问题的情况是您从一个共享的表引用到parent
表。您可以使用共享表parent_ids
使用一列id int primary key
解决此问题。您必须使用子表上的触发器维护此表,但它非常简单 - 在插入时插入parent_ids,在删除时从中删除,在更新时更新,更改id
。
然后,您将引用此parent
表,而不是引用您的parent_ids
表。这将确保参考完整性,并且您不会在2个子表中发生冲突id
。
它会将使用过的ID泄漏给任何用户,但不允许访问任何其他数据。
答案 1 :(得分:0)
在大多数情况下,应该可以在表上编写常规触发器来验证数据修改时的关系。