在这种情况下,我正在使用postgresql建立数据库。在我的数据库中,我有一个联盟和一些与联盟相关联的球队如何设置可以与特定联赛相关联的最小球队数量?
答案 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
级别的标记。该旗帜将指定是否有足够的球队让联盟活跃起来。
维护该标志的一种方法是每次以改变联盟的方式插入,删除或更新团队时使用触发器来更新值。