2011-07-31 4 views
6

는 지금은이 :: 다중 열 고유 제한 조건

a 또는 bUNIQUE 키가있는 경우 작동
INSERT INTO mytable (a,b,c,d) VALUES(1,2,3,4) 
    ON DUPLICATE KEY UPDATE c=VALUES(c),d=VALUES(d) 

...

을하지만 지금은 업데이트 할 경우에만 다른 행 쌍 (a, b)이 표에 존재하지 않으면 (그렇지 않으면 삽입을 건너 뜁니다.)

기본적으로 (a,b)

는 UNIQUE하지 (a) 또는 (b) 수 갈까요하지만 모두 연결되어 있습니다.

예를 들어 이러한 행은 유효 할 것

ID (auto-inc) | a | b | c | d 
      0 | 5 | 1 | 343 |466 
      1 | 5 | 2 | 363 |466 
      2 | 5 | 3 | 343 |496 
      3 | 7 | 1 | 343 |496 

5,1, 5,2, 5.3, 7.1

그러나 # 여기에 2 행 1의 중복 고려되어야한다 행, 그래서 행 #이거든요 1을 (를) 업데이트해야합니다 :

ID (auto-inc) | a | b | c | d 
      0 | 5 | 1 | 343 |466 
      1 | 5 | 1 | 363 |466 
      2 | 5 | 3 | 343 |496 
      3 | 7 | 1 | 343 |496 

이게 가능합니까?

답변

13

b

ALTER TABLE tblname ADD UNIQUE (a,b) 
+0

감사합니다, 나는 너무 바보 같아요 :) – Emma

1
CREATE UNIQUE INDEX index_unique_on_a_and_b ON mytable (a,b) 
1

그것은 당신이 추가하려고하면 UNIQUE를 추가하는 것이 주목할 가치에 (a,b)하지 않도록 UNIQUE KEY을 테이블에 데이터가있는 동안 (A, B)는, 당신은 가능성거야 중복 키 오류가 발생합니다. 테이블을 비우고 고유 인덱스를 추가하면 작동합니다.

관련 문제