我是 MySQL 语言新手。我发现插入关系数据时遇到一些麻烦。我有一个用于存储用户友谊的表。假设 user1(id =1) 和 user2(id =2) 是 friend 。然后,我将信息存储在 friend 表中,如下所示:
好友表
user_id1 | user_id2
1 2
但是,我的php文件中的某些操作可能会再次检查这两个用户的关系,然后插入/更新好友信息。
1) 使用 user_id1 检查用户,然后更新好友信息(使用 insert ON DUPLICATE KEY)。
INSERT INTO friend (user_id1, user_id2) VALUES ('1', '2')
ON DUPLICATE KEY UPDATE user_id2=user_id2
好友表仍然正确,因为没有任何更改:
好友表
user_id1 | user_id2
1 2
但如果先从user2开始检查,则再次插入好友信息
好友表
user_id1 | user_id2
1 | 2
2 | 1
是否有任何 SQL 语句可以防止这种情况发生?
感谢您的回答,抱歉我的英语不好
最佳答案
对于 SQL,它只是新数据,在本例中 1,2 实际上与 2,1 相同。不知道有没有SQL函数可以实现这个功能。但在将值发送到 SQL 之前检查 php 中的值可能是合适的。
不知道你的 PHP 代码,你可以尝试这样的事情
$data = array('user_id1' => 2, 'user_id2' = 1);
arsort($data); //now the lowest id is always first
$user_id1 = current($data);
$user_id2 = next($data);
//send to SQL
希望这能引导您走向正确的方向
关于PHP MySQL 如果关系表中的键不存在则插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17672127/