【发布时间】:2013-07-16 17:07:10
【问题描述】:
我是 MySQL 语言的新手。我发现插入关系数据有些麻烦。我有一张用于存储用户友谊的表格。假设 user1(id =1) 和 user2(id =2) 是朋友。然后,我将信息存储在朋友表中,如下所示:
好友表
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 语句可以防止这种情况发生?
感谢您的回答,对不起我的英语不好
【问题讨论】:
-
您可以使用触发器来检查这一点。
-
try if else IF (EXISTS(SELECT * FROM friend WHERE (user_id1 = '1' and user_id2='2') or (user_id1 = '2' and user_id2='1'))) THEN ELSE INSERT INTO 朋友 (user_id1, user_id2) VALUES ('1', '2') END IF;
-
@Barmar 感谢您的评论。但我不知道如何创建触发器。我稍后会尝试。
-
@user1702477 它不适用于我想要实现的 mysql_query() 函数。