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

Mysql SQL约束:非唯一列中的唯一值,mysql,sql,Mysql,Sql,我有一个名为GroupMembers的表,它表示参与网站上特定社区的用户列表 列如下所示: groupId | accountId | role 如您所见,在我的内部有一个名为“role”的CHAR(1)列,它代表社区中每个用户的角色。主键由前两列组成,“角色”既不是空的,也不是唯一的 现在,问题是:每个组都必须指定其创建者的帐户,我认为可以通过将帐户添加到GroupMembers并将“C”放在其“角色”列中来实现。 但只能有一个创建者,组中的其他帐户不能将“C”作为其“角色” 是否有一

我有一个名为GroupMembers的表,它表示参与网站上特定社区的用户列表

列如下所示:

groupId  |  accountId  | role
如您所见,在我的内部有一个名为“role”的CHAR(1)列,它代表社区中每个用户的角色。主键由前两列组成,“角色”既不是空的,也不是唯一的

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


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

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

相反,您可以在
表中实现此逻辑,方法是让创建者:

alter table groups add column creatorUserId int;
alter table groups add constraint fk_groups_creatorUserId
    foreign key creatorUserId references users(creatorUserId);

这样的限制是存在的。但在MySQL中不是这样。其他数据库允许您实现过滤索引或计算列上的索引

相反,您可以在
表中实现此逻辑,方法是让创建者:

alter table groups add column creatorUserId int;
alter table groups add constraint fk_groups_creatorUserId
    foreign key creatorUserId references users(creatorUserId);