mysql中两列上的唯一索引
我在mysql中有一个名为“UserFriends”的表,我正在更新我的网站用户的好友详细信息 下面是表的模式(UserFriends) 现在,我想在userid和friendid上创建唯一索引。我已经创建了唯一的索引。所以,现在我无法插入与复制相同的userid和friendid。但若我在相反的字段中插入相同的值,它会接受而不会产生错误 例如:mysql中两列上的唯一索引,mysql,Mysql,我在mysql中有一个名为“UserFriends”的表,我正在更新我的网站用户的好友详细信息 下面是表的模式(UserFriends) 现在,我想在userid和friendid上创建唯一索引。我已经创建了唯一的索引。所以,现在我无法插入与复制相同的userid和friendid。但若我在相反的字段中插入相同的值,它会接受而不会产生错误 例如: insert into userfriends ( userid, friendid ) select 1, 2 --- insert perfec
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)
如何防止这种情况发生?第一件事:对于插入内容,不要使用“选择”生成值,因为它容易混淆。而是这样做:
INSERT INTO userfriends (userid, friendid) VALUES (1, 2)
这就是说,拥有向后工作的唯一限定符的唯一方法是以编程方式进行。如果要阻止接受x,y,请运行SELECT*from userfriends,其中userid=y和friendid=x
,如果得到结果,请在插入之前拒绝它。如果不这样做,则按正常方式插入到表中,并且您的唯一键将从此处拒绝它
INSERT INTO userfriends (userid, friendid) VALUES (1, 2)