2014-12-06 2 views
1

중복을 피하기 위해 고유 한 열이있는 게임 시간을 업데이트하는 테이블이 있습니다.중복 키 문제가 있음

내 문제는 다음과 같습니다. 특정 열만 업데이트하고 동일한 경우 새 행을 삽입하지 않는 방법은 무엇입니까?

여기는 query입니다.

는이 코드를했고 여전히에만 Time 열 업데이트하는 대신 새 행을 입력 : 당신은 실제로에서 복합 unique 키 만드는

INSERT INTO `leaderboard` (`Persona`, `Level`, `Track`, `Car`, `Mode`, `Time`, 
          `Date`, `Timestamp`, `HMS`) 
          VALUES ('STIG', 80, 'SPA FRANCORCHAMPS', 
            'AUDI R8 LMS ULTRA', 'HD', '02:17.332', 
            '2014-12-06', '1417825487', '1:24:47') 
ON DUPLICATE KEY UPDATE `Time` = '02:17.332'; 

답변

1

:

ALTER TABLE `leaderboard` 
ADD UNIQUE KEY `Persona` (`Persona`,`Level`,`Track`,`Car`,`Mode`,`Time`,`Date`,`Timestamp`,`HMS`); 

을 그것은 것을 의미한다을 튜플 (Persona, Level, Track, Car, Mode, Time, Date, Timestamp, HMS)은 고유합니다. 그러나 시간 열은 업데이트되어야하며 고유하지 않을 가능성이 큽니다.

아마 싶은 것은 :

ALTER TABLE `leaderboard` 
ADD UNIQUE KEY `Persona` (`Persona`,`Level`,`Track`,`Mode`); 
+0

흠이 어떻게되는지 볼 것이다, 나는 이유가 그들 모두 독특한 만들었습니다. – Lion

+1

이제는 문제가 레벨이었습니다.이 예제에서 볼 수있는 것처럼, http://sqlfiddle.com/#!2/27115/1/0 그가 레벨 79이고 시간이 80 레벨이라고 가정합시다. 그래서 새로운 행을 삽입하는 또 다른 시간 ... 그러나 나는 그것을 스스로 고쳤다 http://sqlfiddle.com/#!2/83ce97/1 – Lion

+0

@Lion : 질문을 수정해서 목표를 명확하게해야한다. 사용자도 마찬가지입니다. 그 결과 내 대답을 향상시킬 것입니다. –