2011-05-12 2 views
1

MySQL 고유 식별자가있는 문제가 발생했습니다. 동일한 사용자 ID의 여러 인스턴스뿐만 아니라, 그룹 ID의 여러 인스턴스 만 이있을 수고유 한 열이 여러 개 있지만 고유 한 조합 만 있습니다.

 
user_id group_id 
1  1 
1  2 
1  3 
2  1 
2  4 

두의 독특한 조합을 허용 : 내가 뭘 원하는 같은 것을 가지고있다. 나는 이것을 ON DUPLICATE KEY UPDATE MySQL 쿼리와 함께 사용하고 있으며 테이블의 인덱스에 무엇을해야하는지 궁금합니다.

 
PRIMARY id 
UNIQUE user_id, group_id 

하지만 ... a)이 충분와 b) 내가 바로 내가 무엇을 찾고 얻기 위해 그 일을하고있다 : 현재,이 있나요? 어떤 도움

덕분에

제임스

+0

샘플 테이블에 'id'필드가 없습니까? 그렇지 않으면 두 번째'UNIQUE' 키가 원하는 것을 정확하게 할 것입니다. 여러 user_ids, 여러 개의 group_ids가 있지만 테이블의 특정 userid + groupid 중 하나만 허용합니다. –

+0

ID 열이 있습니다. 간결성을 위해 방금 남겨 두었습니다 :-) – Bojangles

답변

3

당신은 거의 그것을 얻었다. 당신의 MyISAM 엔진을 사용하는 경우, 당신은이 작업을 수행 할 수 있습니다

CREATE TABLE your_table(
id int unsigned not null auto_increment, 
group_id int unsigned, 
primary key(group_id, id) 
) ENGINE = MyISAM; 

그것을 시도하고 동작을 보려면,이 ID를 당신이 예에서 지정된 방법을 증가거야, 그리고 당신도 고유 제한 조건이있을 것이다.

+0

간단합니다! 매우 감사합니다. 그냥 게시하는 대신 시행 착오를 시도 했어야했는데, 이봐, 작동 해! +1 및 올바른 답. – Bojangles

+0

Heh, thing is - 이것에 관한 정보는 실제로 "googleable"이 아니며, 그것을 지원하는 MyISAM 엔진 일뿐입니다 (InnoDB는 그렇게하지 않을 것입니다. 예를 들어, InnoDB는 그렇게하지 않을 것입니다. 기본 키). 내가 도울 수있어서 기뻐, 환호 :) –