mysql – 没有排序的SQL组合主键(任何一个顺序的整数对都必须是
发布时间:2020-12-11 23:47:36 所属栏目:MySql教程 来源:网络整理
导读:我有一个带有主键_id的用户的MySQL表,我希望将友谊(在其他用户的朋友列表上的可见性)表示为具有成对userId外键的表.我想的是: CREATE TABLE UserFriendships ( userIdA INT NOT NULL,userIdB INT NOT NULL,PRIMARY KEY (userIdA,userIdB),FOREIGN KEY (user
我有一个带有主键_id的用户的MySQL表,我希望将友谊(在其他用户的朋友列表上的可见性)表示为具有成对userId外键的表.我想的是:
据我所知,这将允许(userIdA = 2,userIdB = 7)和(userIdA = 7,userIdB = 2)作为不同的行插入.我想要每个友谊一行,也就是说每对userIds一行. 有谁知道我怎么能改善这个?即使满足上述约束,要获得用户foo的所有朋友的列表,我必须进行联合,例如:SELECT userIdB AS friendUserId WHERE userIdA = foo UNION SELECT userIdA WHERE userIdB = foo.这是完成该查询的最佳方式,还是应该考虑更改我的架构? 最佳答案 您可以使用TRIGGER BEFORE INSERT来制定业务规则:> userIdA始终是ID较低的用户,userIdB始终是ID较高的用户 这样,组合(A,B)和(B,A)两者产生具有相同主键的相同列顺序.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |