2014-04-10 5 views
0

mysql 데이터베이스가 있습니다. 내 테이블에있는 국가 목록을 업데이트해야합니다. 내 테이블에 어떤 나라가있다. 존재하지 않으면 그 나라를 확인하고 테이블에 삽입해야합니다. 나는 SQL 스크립트 다음에 사용된다. 그러나 이것은 효과가 없습니다. 이 코드를 실행하면 레코드가 복제됩니다.MYSQL 데이터베이스를 사용하여 테이블에 삽입하거나 업데이트하십시오.

MySQL의 쿼리 :

INSERT INTO `moneyexpressstore`.`countries` (`Name`, `Code`, `CurrencyId`) VALUES 
    ('Australia', 'au', NULL) ON DUPLICATE KEY UPDATE Name=VALUES(Name) 

덕분에,

+0

입니다 구조 테이블에 기본 키가 있습니까? –

+0

그 테이블에 고유 한 인덱스가 있습니까 ('Code'이어야합니다)? –

+0

해당 쿼리의 키가 기본 키를 참조하기 때문에 중복 레코드가 불가능합니다. –

답변

0

먼저 데이터베이스 열 countries에 중복 레코드가없는 있는지 확인의 문서에 보라 다음을 실행하십시오

CREATE UNIQUE INDEX countriesindex ON countries (Name(50))

50은 인덱스가 "고유"값을 검색 할 문자의 양입니다. 예를 들어 해당 숫자가 3이면이 두 문자열이 동일하게 간주되고 1062 Duplicate Entry 오류가 발생하고 abcHELLO=abcWORLD 오류가 발생하고 INSERT 대신 UPDATE이 발생합니다.

1062 오류가 발생하면 데이터베이스에 복제본이 있다는 의미이므로 제거하고 다시 시도하십시오. 이 후

귀하의 요청이 시도 잘 실행하고 "이름"

관련 문제