我有一个名为GroupMembers的表,它代表参与网站上某些社区的用户列表。
列看起来像这样:
groupId | accountId | role
正如您所看到的,我在内部有一个名为“role”的CHAR(1)列,它代表了社区中每个用户的角色。主键包含前两列,'role'既不是NOT NULL也不是UNIQUE。
现在,问题在于:每个组都必须拥有指定其创建者的帐户,我认为我可以通过将该帐户添加到GroupMembers并将“C”放入其“角色”列来实现。 但是只能有一个创作者,该组中的其他帐户不能将“C”作为他们的“角色”。
是否存在一个约束,允许我检查其“角色”列中是否只有一行“C”,除了UNIQUE(我不能使用它,因为可以有任何其他类型的任何数量)用户)?
答案 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);