如何使mysql表中的值组合唯一,而不管它们的顺序如何?

a2mppw5e  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(382)

我正在创建一个应用程序,其中包括一个朋友系统,比如facebook上的朋友系统。我在sql数据库中构造这个的方法是使用一个包含列的friend表 ID, accountID1, accountID2 因此,这两个帐户中的每一个涉及的友谊是值得注意的。问题是友谊可以用两种不同的方式来表达,例如:

ID | accountID1 | accountID2
 1 |      1     |      2 
 2 |      2     |      1

如果我使组合唯一,它不能防止这种情况发生。我如何在mysql中创建一个约束,以防止友谊以两种不同的方式出现,从而确保数据的完整性?或者,是否有一种不同的方式来存储这些信息,以防止出现此类问题?

mklgxw1f

mklgxw1f1#

我使用的最后一个解决方案是首先去掉friends表的id,并用两个帐户id生成一个复合主键 PrimaryKey(accountID0, accountID1) . 这确保了它们的组合是唯一的。然后我创建了一个“before insert trigger”来切换这些值,以便较小的accountid始终处于 accountID0 . 这种方法工作得很好,到目前为止没有问题。

相关问题