【发布时间】:2014-03-07 16:51:27
【问题描述】:
假设我有一个“游戏”桌,其中有一对有序的 2 名参与者:
id | make | party1_id | party2_id
现在我想像这样填写表格:
INSERT INTO game (party1_id, party2_id) VALUES (1, 2); -- OK
INSERT INTO game (party1_id, party2_id) VALUES (4, 3); -- OK
INSERT INTO game (party1_id, party2_id) VALUES (2, 4); -- OK
INSERT INTO game (party1_id, party2_id) VALUES (2, 1); -> should fail
最后一次尝试应该失败,因为两个参与者的游戏已经存在,尽管玩家顺序不同。我不能强制表格按照 id 的顺序保存 party1_id 和 party2_id,因为它们有一些意义(主场球员与客场球员)。
所以问题是,我们可以在 MySQL 中创建一个适用于我的情况的 UNIQUE 约束吗?
到目前为止,我认为我可以创建一个生成的列,其中两个 id 按升序排列作为连接字符串,并在它们上放置一个唯一索引(例如第一行的“1_2”)。不过,这似乎有点尴尬。
我看到了another question related to this,但它不适用于 MySQL。
【问题讨论】:
标签: mysql unique-key