簡體   English   中英

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

[英]SQL Constraints: Unique value in a non-unique column

我有一個名為GroupMembers的表,它代表網站上某些社區的用戶列表。

列看起來像這樣:

groupId  |  accountId  | role

如您所見,內部有一個名為“ role”的CHAR(1)列,它代表社區中每個用戶的角色。 主鍵由前兩列組成,“角色”既不是NOT NULL,也不是UNIQUE。

現在,這里出現了問題:每個組都必須指定其創建者的帳戶,我認為可以通過將帳戶添加到GroupMembers並將“ C”放入其“角色”列來實現。 但是只能有一個創建者,該組中的其他帳戶不能將“ C”作為其“角色”。

是否有約束條件可以讓我檢查“角色”列中是否只有一行帶有“ C”的字符,除了UNIQUE以外(我不能使用,因為其他類型的用戶可以有任意數量) ?

存在這樣的約束。 但不是在MySQL中。 其他數據庫允許您實現過濾索引或計算列上的索引。

相反,您可以讓創建者在Groups表中實現此邏輯:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM