2013-03-23 4 views
0

mysql에 'UserFriends'라는 이름의 테이블 하나가 있습니다. 여기서 사용자 웹 사이트의 사용자 세부 정보를 업데이트하고 있습니다. 여기 mysql의 2 열에 대한 고유 인덱스

테이블의 스키마 (UserFriends)

id int, 
Userid int, 
friendid int, 
createdate timespan 

지금, 나는 사용자 ID & friendid에 고유 인덱스를 생성 할 수 있습니다. 고유 색인을 잘 만들었습니다. 그래서, 지금은 같은 사용자 ID와 중복으로 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

첫 번째 사항 먼저 삽입물에 대해 '선택'을 사용하여 값을 생성하지 마십시오. 혼동을 일으킬 수 있습니다. 대신 다음과 같이하십시오.

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

역순으로 작동하는 고유 한 한정자를 사용하는 유일한 방법은 프로그래밍 방식으로 수행하는 것입니다. x, y가 허용되지 않도록하려면 SELECT * FROM userfriends WHERE userid = y AND friendid = x을 실행하고 결과가 나타나면 삽입을 거부하십시오. 그렇지 않으면 테이블에 정상적으로 삽입하면 고유 키가 그 키를 거부합니다.