2009-11-23 1 views
1

"person_code"열이있는 데이터 집합이 있습니다. 내가 컬럼에 데이터 세트의 기본 키를 설정하면 지금> 하나의 후행 공백 데이터 집합 - 기본 키를 설정할 때 값 중복

-

  • "CARRA"
  • "CARRA"

    이 열은 다음과 같은 데이터를 포함 "person_code"다음 오류가 발생합니다 :

    "이 열은 현재 고유 값을 가지고 있지 않습니다."

    어쨌든 주위에? 내가 생각할 수있는 가장 좋은 방법은 "primary_key"라는 새 열을 추가 한 다음 끝/시작 공백을 다른 부호로 바꾸는 것입니다. 이것은 몇 가지 추가적인 문제를 일으킬 것입니다 : 만약 _로 그들을 대체하고 데이터베이스에 Carra_가 이미 있습니다 ...

    더 좋은 방법이 있습니까?

+0

왜 기본 키 열에 후행 공백을 허용 하시겠습니까? 나는 "Carra"와 "Carra"가 별개의 가치를 지니는 것이 정확하다는 것을 알고 있지만 기껏해야 혼란에 대한 처방입니다. – APC

+1

글쎄, 우리의 응용 프로그램 코드를 제거합니다. 타사 응용 프로그램에서 해당 응용 프로그램을 제거하지 않습니다. 그래서 우리는 그들과 붙어 있습니다. – Carra

+0

FWIW, 나는 같은 상황에 처해있다. 행 중 하나에서 후행 공백과 동일한 패턴의 데이터를 상속했으며 레코드가 만들어 질 때 SQL Server가이 데이터를 기본 키 열에 대해 유효하다고 받아들이면 DataSet.PrimaryKey가이 예외를 throw하는 버그라고 생각합니다. . 그것이 문제 였다면, 그것은 그때에 신고되었을 것입니다. –

답변

1

이것은 데이터베이스 스키마 질문이며 질문에 대한 대답은 person_code 열이 값이 고유하지 않으므로 기본 키로 적합하지 않습니다.

기본 키는 100 % 고유해야합니다. 일반적으로 점진적으로 생성 된 숫자는 적절한 선택입니다.

+1

값 *은 100 % 고유합니다. DB에 고유 한 제한 조건이 있습니다. – Carra

1

기본 키는 항상 고유 때문에 두 사람이 같은 사람의 코드가있는 경우 다음이 참으로이 문제

의 원인이됩니다 하나는 뒤에 공간이 말한대로 지금은 (그들이 완전히 동일하지 않은 것으로 보인다. 내 생각에 귀하의 코드는 기본적으로 후미 공백을 제거 할 수 있습니다. 시작 부분과 끝 부분에 'Carra'와 'Carra'와 같은 기호를 붙이면 다른 기호로 만들 수 있습니다.

그래도 다른 심벌을 정의하십시오. 데이터에 절대 존재하지 않을 것으로 판단되는 것을 시도해보십시오.

0

새 기본 키 만들기 필드, 바람직하게는 데이터 유형의 int 또는 uniqueidentifier를 사용하여 문제점 및 장기간 데이터베이스 유지 보수를위한 제안 된 솔루션입니다.

값의 후행 공백은 일반적으로 좋지 않습니다. 둘 다 UI 관점 에서뿐만 아니라 데이터 무결성에 대해서도 마찬가지입니다. 데이터 정리, 선행 및 후행 공백, 특수 문자 등을 데이터에서 제거하는 것을 고려할 수 있습니다.

관련 문제