对每个具有liquibase的独特团队唯一约束表格,只允许一个真值

时间:2015-08-20 13:18:45

标签: sql postgresql liquibase

我有一个存储团队成员的SQL连接表。团队和人员表已经存在,team_members表连接这两个。

团队成员表还包括另一个布尔列team_lead,它代表给定团队的领导者。每个团队只能有一名领导者,我知道这令人震惊:)。

我想添加一个唯一约束,以确保每个团队只存在一个团队负责人。基本上我想确保team_id列的每个唯一值只有一个具有true值的行可能存在于team_lead列中,但是对于team_lead可能存在任意数量的行,并且为false。

我想添加第二个约束,防止从team_member数据库中删除team_lead,在删除行之前,team_lead值必须设置为false。

看起来部分键可能是解决方案,但是,老实说,我不熟悉它们,我也不确定liquibase是否允许使用它们。我不期待完整的sql,但有人可以帮助我了解我应该使用什么工具以及为什么要强制执行此操作?

1 个答案:

答案 0 :(得分:1)

不是在TeamMembers表中添加布尔值,而是将一个lead_team_member列添加到团队表中,该列将引用作为领导者的成员的TeamMember记录。

不需要棘手的约束,并且您可以使用适当的外键来防止删除作为团队负责人的TeamMember记录。

相关问题