0

我在 mysql 中有一张名为“UserFriends”的表,我正在更新我的网站用户的朋友详细信息。

这是表的架构(UserFriends)

id  int,
Userid int,
friendid int,
createdate timespan

现在,我想在用户 ID 和朋友 ID 上创建唯一索引。我已经很好地创建了唯一索引。所以,现在我无法插入相同的用户 ID 和朋友 ID 作为重复。但是如果我在相反的字段中插入相同的值,它会接受而不会产生错误。

例子 :

insert into userfriends ( userid, friendid )
select 1, 2  --- insert perfect
insert into userfriends ( userid, friendid )
select 1, 2  --- show error because unique index comes in a picture

现在我正在插入

insert into userfriends ( userid, friendid )
select 2, 1  --- records insert here (i don't want this)

我该如何防止这种情况?

4

1 回答 1

0

首先要做的是:对于您的插入,不要使用“选择”来生成值,因为它很容易变得混乱。而是这样做:

INSERT INTO userfriends (userid, friendid) VALUES (1, 2)

也就是说,拥有一个向后工作的唯一限定符的唯一方法是以编程方式进行。如果您想阻止 x,y 被接受,请运行SELECT * FROM userfriends WHERE userid = y AND friendid = x,如果您得到结果,请在插入发生之前拒绝插入。如果你不这样做,那么像往常一样插入到表中,你的唯一键将从那里拒绝它。

于 2013-03-23T12:42:28.413 回答