postgresql限制给定表可用的外键数

时间:2017-04-02 22:27:32

标签: postgresql

在这种情况下,我正在使用postgresql建立数据库。在我的数据库中,我有一个联盟和一些与联盟相关联的球队如何设置可以与特定联赛相关联的最小球队数量?

2 个答案:

答案 0 :(得分:1)

可以使用触发器执行此操作。添加团队(INSERT),删除(DELETE d)或UPDATE d以更改团队时,BEFORE触发器应SELECT 1 FROM league WHERE league_id = NEW.team_id FOR UPDATE锁定新球队和/或旧球队的联赛排名,取决于变化的类型。

然后AFTER触发器对旧的和/或新联盟进行COUNT查询以检查是否满足约束,如果不是,则RAISE是异常。< / p>

您需要一个字段来标记联盟“活动”或“非活动”,其中约束仅在活动时被检查,否则您将永远无法创建前几个团队。

答案 1 :(得分:0)

您不会将其设置为约束。相反,您可以将其设置为league级别的标记。该旗帜将指定是否有足够的球队让联盟活跃起来。

维护该标志的一种方法是每次以改变联盟的方式插入,删除或更新团队时使用触发器来更新值。