지금까지 문제를 디버깅하려고 애 쓰고 있었지만 지금은 문제가 무엇인지 알았습니다. 카탈로그에 고유 한 값만 강제 적용하는 테이블에 고유 한 제한 조건이 있습니다. 그러나 나는이 경우 고유 한 것이 무엇인지에 대해 잘 이해하지 못하는 것 같습니다. 두 개의 제품 번호가 있습니다 MP1156 및 MP1156ZF입니다.SQL 이해 테이블 고유 제한
Msg 2627, Level 14, State 1, Line 5
Violation of UNIQUE KEY constraint 'UK_CNUMUNIQUE'. Cannot insert duplicate key in object 'dbo.IDWProductCodes'. The duplicate key value is (MP115).
일어나고있다 내가 다음 첫 번째 키를 삽입 할 때마다이 두 번째 키를 삽입하려고이다가, SQL들이 동일하다고 가정 및 제 덮어 쓰기 :
Insert into IDWProductCodes(PRCEAN, PRCGTIN, PRCatalogNumber, PRCIsActive, PRIsReplaced, PrIsREPlacement,PRProductID)
Select
'11232', '23223', 'MP115BP', 1, 0, 0, '267F104C-6BA4-4C7E-A0C1-6615CBB9DA4C'
Insert into IDWProductCodes(PRCEAN, PRCGTIN, PRCatalogNumber, PRCIsActive, PRIsReplaced, PrIsREPlacement,PRProductID)
Select
'11232', '23223', 'MP115', 1, 0, 1, '267F104C-6BA4-4C7E-A0C1-6615CBB9DA4C'
Insert into IDWProductCodes(PRCEAN, PRCGTIN, PRCatalogNumber, PRCIsActive, PRIsReplaced, PrIsREPlacement,PRProductID)
Select
'11232', '23223', 'MP15', 1, 1, 1, '267F104C-6BA4-4C7E-A0C1-6615CBB9DA4C'
는 오류가 발생합니다 둘째로, 나는 전혀 원하지 않는 효과입니다.
정말로 원하는 것은 테이블에 다른 문자열 (중복 없음)을 입력 할 수있는 기능입니다. 나는 유일한 제약이 그것이 취할 것 인 모든 것이었다라고 생각했다. 그러나 지금 나는 확실하지 않다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까?
제품 번호 열의 너비와 유형은 무엇입니까? 또한, 당신이 이야기하고있는 고유 한 제약 조건을 스크립트로 작성하여 질문에 포함시킬 수 있습니까? – JohnFx
스키마를 보여 주면 도움이 될 것입니다. 'MP1156'및 'MP11156ZF'문자열은 동일한 것으로 조합되지 않습니다. SQL은 길이가 더 긴 문자를 공백으로 채우고 왼쪽에서 오른쪽으로 작업하면서 차례대로 각 문자를 비교하여 문자열을 효과적으로 비교합니다. 첫 번째 차이가 결과를 결정합니다. –
그냥 NVarchar (48). – Kobojunkie