mysql中2列的唯一索引

时间:2013-03-23 12:38:20

标签: mysql

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

这是表格的模式(UserFriends)

id  int,
Userid int,
friendid int,
createdate timespan

现在,我想在userid&上创建唯一索引friendid。我已经创造了独特的指数。所以,现在我无法插入相同的userid和friendid作为重复。但如果我在相反的字段中插入相同的值,它接受而不会产生错误。

示例:

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)

我如何防止这种情况?

1 个答案:

答案 0 :(得分:0)

首先要做的事情是:对于你的插入,不要使用'select'来生成值,因为它可能会让人感到困惑。而是这样做:

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

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