在postgresql上保持两个表结构相同

在postgresql上保持两个表结构相同,postgresql,postgresql-9.4,Postgresql,Postgresql 9.4,PostgreSQL 9.4中有两个表A和B。我们希望确保A的列始终是B的列的子集(即,防止A上的ALTER添加/删除/修改可能使其与B不同的列)。如何做到这一点 我猜是ALTER上有一种触发器(尽管触发器只发生在CRUD上)还是一种特殊的约束?(尽管每一列上都有一个外键似乎有些过分) (用例:B就像a的影子,它会周期性地接收a的记录转储,因此我们希望确保,如果a的结构发生变化,我们不会忘记相应地更改B)正如您已经知道的,触发器在CRUD中。我想也许你可以创建一个触发器,在这里你可以比较每个积垢

PostgreSQL 9.4中有两个表A和B。我们希望确保A的列始终是B的列的子集(即,防止A上的
ALTER
添加/删除/修改可能使其与B不同的列)。如何做到这一点

我猜是ALTER上有一种触发器(尽管触发器只发生在CRUD上)还是一种特殊的约束?(尽管每一列上都有一个外键似乎有些过分)


(用例:B就像a的影子,它会周期性地接收a的记录转储,因此我们希望确保,如果a的结构发生变化,我们不会忘记相应地更改B)

正如您已经知道的,触发器在CRUD中。我想也许你可以创建一个触发器,在这里你可以比较每个积垢上的两个表并发出警报。但是,只有在做出更改并有人玩tableA之后,才会发出警报


您可以为每个tableB列到tableA列创建多个FK,但这只会在您尝试删除或重命名列时发出通知,如果您更改字段类型或添加新列,则不会收到警报。

@Abelisto的评论是正确的,在PostgreSQL中实现这一点的一个好方法是使用


另一种方法是让一个主控台、一张桌子和一个(或一个带有…)的视图,也许是一个?谢谢@Abelisto,这是正确的答案