唯一约束 table 以允许每个具有 liquibase 的独特团队只有一个真实值

Uniquely constrain table to allow only one true value per unique team with liquibase

我有一个 sql join table 存储团队成员。团队和人员 table 已经存在,team_members table 加入这两个。

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

我想添加一个唯一约束以确保每个团队只有一名团队领导。本质上,我想确保 team_id 列的每个唯一值在 team_lead 列中可能只存在一个具有真值的行,但是对于 team_lead 可能存在任何数量的假值行.

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

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

不是向 TeamMembers table 添加布尔值,而是向团队 table 添加 lead_team_member 列,这将引用领导成员的 TeamMember 记录。

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