我在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)
我如何防止这种情况?
答案 0 :(得分:0)
首先要做的事情是:对于你的插入,不要使用'select'来生成值,因为它可能会让人感到困惑。而是这样做:
INSERT INTO userfriends (userid, friendid) VALUES (1, 2)
也就是说,拥有一个向后工作的唯一限定符的唯一方法是以编程方式执行它。如果要阻止接受x,y,请运行SELECT * FROM userfriends WHERE userid = y AND friendid = x
,如果得到结果,请在插入之前拒绝插入。如果不这样做,则按正常方式插入表中,并且您的唯一键将从那里拒绝它。