SQL约束:非唯一列中的唯一值

时间:2016-11-18 10:52:28

标签: mysql sql

我有一个名为GroupMembers的表,它代表参与网站上某些社区的用户列表。

列看起来像这样:

groupId  |  accountId  | role

正如您所看到的,我在内部有一个名为“role”的CHAR(1)列,它代表了社区中每个用户的角色。主键包含前两列,'role'既不是NOT NULL也不是UNIQUE。

现在,问题在于:每个组都必须拥有指定其创建者的帐户,我认为我可以通过将该帐户添加到GroupMembers并将“C”放入其“角色”列来实现。 但是只能有一个创作者,该组中的其他帐户不能将“C”作为他们的“角色”。

是否存在一个约束,允许我检查其“角色”列中是否只有一行“C”,除了UNIQUE(我不能使用它,因为可以有任何其他类型的任何数量)用户)?

1 个答案:

答案 0 :(得分:2)

存在这样的约束。 。 。但不是在MySQL中。其他数据库允许您在计算列上实现筛选索引或索引。

相反,您可以通过创建者:

Groups表中实现此逻辑
alter table groups add column creatorUserId int;
alter table groups add constraint fk_groups_creatorUserId
    foreign key creatorUserId references users(creatorUserId);