2012-08-25 5 views
10

두 개의 고유 키를 가지고 어떻게 든 연결할 수있는 방법이 있습니까? 예를 들어mysql 결합 된 고유 키

난 다음 표와 'title'and'저장 '는 고유 키

id | category | title  | price | store 
1 | outdoors | fishing rod | 59.99 | wal-mart 
2 | auto  | Penzoil Oil | 9.99 | target 

은하고 난 다음 레코드를 삽입하려고하면. 이 새로운 기록은 제목이 "낚싯대"입니다 및 저장소가 '월마트'이고 그 제목 및 저장

| outdoors | fishing rod | 30.99 | wal-mart 

와 기존 레코드가 있기 때문에 무시하지만 될 수 난 다음 레코드를 삽입하려고 시도하는 경우 그것은이 그냥 MySQL과 연동 가능하다 "대상"

| outdoors | fishing rod | 30.99 | target 

의 "낚싯대"의 제목과 저장에 존재하는 기록이 없기 때문에 받아 들여질 것인가?

답변

22

당신은 예컨대이 :

CREATE UNIQUE INDEX arbitrary_index_name ON table_name (title, store); 
6

예. 두 개의 고유 한 구속 조건 대신 두 열 모두에 단일 고유 제한 조건을 작성해야합니다.

CREATE INDEX 구문은 다음과 같습니다 당신의 예를 들어

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name 
    [index_type] 
    ON tbl_name (index_col_name,...) 
    [algorithm_option | lock_option] ... 

그것은 다음과 같이 보일 것입니다 : 당신은 또한 당신이 만든이 잘못된 고유 인덱스를 삭제해야합니다

CREATE UNIQUE INDEX index_name ON tbl_name (title,store); 

.

색인을 만드는 방법에 대한 자세한 내용은 documentation을 참조하십시오.

+0

+1 현재 고유 인덱스를 삭제하는 경우 – Bugs

-1

예 당신이 할 수있는 여러 컬럼에 인덱스를 정의 할 수 있습니다!

ALTER TABLE table_name DROP PRIMARY KEY; 
ALTER TABLE table_name ADD PRIMARY KEY(title, store); 
+2

이것은 나쁜 생각입니다. 숫자 기본 키에는 일관성 (대부분 테이블에 있음) 및 단순성과 같은 많은 이점이 있습니다. – Bugs

1

ALTER table_name 표 ADD UNIQUE INDEX (title, store);

+0

코드 제공 방법 및 질문에 대한 추가 정보를 얻을 수 있습니까? –