gpt4 book ai didi

mysql - 对两列值组合的唯一约束

转载 作者:行者123 更新时间:2023-11-29 18:01:18 25 4
gpt4 key购买 nike

不确定如何表达这个问题,所以如果听起来很奇怪,那我就不好了。

我的数据库中有一个名为 friendRequests 的表,其中包含以下列:idsender_idrecipient_id状态。如何确保其他行没有重复的 recipient_idsender_id 值?

例如,如果表中的一行具有以下值:(1, 4, 6, 0),我如何确保没有其他行具有 sender_id 为 4,recipient_id 为 6 并且没有其他行的 sender_id 为 6 且 recipient_id 共4个?

最佳答案

对于same relations - 对 <sender, receiver> 使用唯一约束。

逆关系<receiver, sender>不过这是可能的,因为唯一键约束的 id 不同。

要处理此问题(使用唯一键约束),您必须添加另一列,我们将其称为 friendship - 在那里,您将添加一个唯一的键约束,并插入连接的用户 ID,但已排序:

即如果用户3发送好友请求至10 ,您将插入 3-10到那个专栏。如果邀请来自 103 ,您将添加 3-10以及。

这样,您可以跟踪谁发起了友谊( sender_column=3receiver-column=10 ),同时也确保没有反向邀请( friendship=3-10 已存在)

所以这就像

INSERT INTO friendships(sender, receiver, friendship) VALUES(3,10,"3-10");
or vice versa:
INSERT INTO friendships(sender, receiver, friendship) VALUES(10,3,"3-10");

如果已经请求了友谊,则这两个约束之一将避免插入。 (实际上第二个约束对于任何情况都足够了,前两列只能确定友谊的主动和被动部分。)

关于mysql - 对两列值组合的唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48307583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com