2013-08-01 3 views
1

와 레코드 값을 중복 ... 이유는이 에러가 발생합니까 : 좀 더 설명해 보자 고유 키

나는 하나의 값을 지정하는 경우, 인포믹스 DB를 테이블에 레코드를 삽입

어떤 열의 값이 있더라도, 항상 아래의 오류를 던질 것입니다. (정보의이 작은 퀴즈는 황금색이며, 알아 내기에는 다소 시간이 걸립니다.) 열은 char (4)입니다. 다람쥐를 사용하여 말할 수있는 고유 한 키 색인이 없습니다. 테이블에 값을 설정하는 다른 많은 열이 있지만이 문제는 없습니다.

ERROR [HY000] [Informix][Informix ODBC Driver][Informix]ISAM error: duplicate value for a record with unique key. 

또는

Error: Could not insert new row - duplicate value in a UNIQUE INDEX column. 

사람이 어디서 어떻게이 "가정"고유 키를 찾을 수있는 올바른 방향으로 날 포인트 ... 내가 부족 테이블 스키마 뭔가가 있어야합니다 그것은 (바람직하게 다람쥐를 사용하여) 실패하고있다? 기본 키 탭 및 색인 탭 아래 개체 창을 이미 살펴 보았습니다.이 열은 어느 하나에도 나열되어 있지 않습니다.

다크리스에 따라 테이블 스키마에 대한 자세한 정보를 제공 할 수 있습니다. 기본 키가 없으며 문제가있는 열과 관련이없는 10 개의 인덱스가 있습니다. 10 개의 인덱스 중 1 개만 고유 인덱스입니다.

+1

INSERT 할 대상 테이블의 인덱스를 확인해야합니다. 이러한 인덱스 중 하나 (또는 ​​이상)는 한 번만 값을 포함 할 수있는 열 (또는 열 집합)을 지정합니다. 이러한 종류의 고유 인덱스의 전형적인 예는 테이블의 기본 키입니다. 내 첫 번째 추측은 테이블에 이미 존재하는 PK 값이있는 행을 삽입하는 것입니다. -이 오류의 가장 빈번한 이유입니다. –

+2

테이블에 트리거가 있습니까? 아마도 오류는 트리거에서 발생하는 동작에서 비롯된 것일 수 있습니다. – HLGEM

+0

테이블 세부 정보를 제공 할 수 있습니까? Informix에 익숙하지 않지만 "dbschema"명령 줄 도구가 있습니다 (http://stackoverflow.com/questions/4284187/informix-equivalent-to-mysqls-show-create-table). –

답변

1

이러한 문제는 대개 트리거로 인해 발생합니다. 문제가 발생할 수있는 트리거가 있는지 확인합니다.

0

당신 말 :

내가 상관없이 값은 항상 [-239/-100] 오류가 발생하지 않습니다, 열 중 하나의 값을 지정합니다.

테이블에 삽입 할 때 전체 행을 삽입해야합니다. 열 중 하나에 만 값을 지정해도 다른 열에는 기본값 (종종 NULL)이 삽입됩니다.

(내가 의미하는 바를 잘못 해석 할 가능성이 있으며, 특정 하나의 컬럼을 제외한 모든 컬럼에 값을 지정하면 INSERT가 작동합니다. 특정 컬럼의 값도 지정하면, 삽입은 항상 실패합니다. 당신은 문제를 결정하는 데 도움이 SELECT COUNT(*), COUNT(DISTINCT problem_column) FROM <table>를 실행해야 할 수도 있습니다.)

에는 기본 키가 없습니다. 10 개의 인덱스가 있으며 그 중 아무 것도 문제가있는 컬럼에 연결되어 있지 않습니다. 10 개의 인덱스 중 1 개만 고유 인덱스입니다.

고유 인덱스가 있습니다 (사실 기본 키로 선언되지 않았지만 사실상 기본 키입니다). INSERT 문에서 해당 열의 값을 지정하지 않으면 NULL이 삽입되고 해당 열에 NULL이있는 테이블의 한 행만 가질 수 있습니다. Informix는 'UNIQUE UNLESS NULL'을 지원하지 않습니다.

테이블에있는 10 개의 인덱스는 큰 숫자입니다. 나는 그들 중 3 명 이상이 외래 키 열에 대한 인덱스가 아니라면 그들의 무게를 끌어 당기는 것을 확신 할 필요가있다.

더 이상 도움을 얻으려면, 당신은 게시해야합니다

  1. (많은 열이없는 방법의 표시 또는 스키마의 적절한 부분 집합) 테이블의 스키마.
  2. 실행중인 INSERT 문입니다.
+0

팁 주셔서 감사하지만, 그 중 대부분은 이미 알고 있습니다. –

관련 문제