Database postgresql的继承和外键约束?

Database postgresql的继承和外键约束?,database,database-design,postgresql,inheritance,Database,Database Design,Postgresql,Inheritance,在我们的项目中,我们从PostgreSQL数据库的继承特性中受益匪浅 我们为不同的机构实现方案的动态创建。这种结构允许我们解决大量的安全问题,这些问题在大容量表(无分区)的情况下会立即发生 我们遇到的唯一问题是保证数据库的完整性,这通常(在没有继承的结构意义上)是通过外键约束实现的 由于PostgreSQL有一定的限制(请参阅),我们不得不在不受约束的情况下维护表结构 是否有可能通过触发器和/或检查“模拟”外键约束,即使假设相对性能衰减? 非常感谢您的任何建议! 谢谢。在大多数情况下,应该可以在

在我们的项目中,我们从PostgreSQL数据库的继承特性中受益匪浅

我们为不同的机构实现方案的动态创建。这种结构允许我们解决大量的安全问题,这些问题在大容量表(无分区)的情况下会立即发生

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

由于PostgreSQL有一定的限制(请参阅),我们不得不在不受约束的情况下维护表结构

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

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

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

唯一的问题是,您从共享的表引用到父表。您可以使用共享表
parent\u id
和一列
id int主键来解决这个问题。您必须使用子表上的触发器来维护此表,但它非常简单-插入时插入到父表id,删除时从中删除,更新时更新,这会更改
id

然后,您将引用此
父ID
表,而不是引用您的
父ID
表。这将确保引用的完整性,并且在两个子表中不会有冲突的
id


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

我理解的关键词是“在PostgreSQL中以编程方式强制使用外键”同意,但要保证触发器以适当的方式运行将是一项相当艰巨的工作……很好的提示!谢谢分享。