2016-07-27 1 views
0

oracle 데이터베이스의 테이블에 레코드를 삽입하는 데 문제가 있습니다.ORA-00001 고유 제한 - 유효한 값 사용

삽입은 VB.NET을 통해 수행됩니다. 테이블 자체에는 기본 키가 없으며 두 개의 고유 색인이 있습니다.

두 고유 인덱스는 정수 (오라클 시퀀스에 의해 유지 관리 됨) 및 char 필드 (두 번째 시퀀스에 기반한 계산)입니다.

레코드를 삽입 할 때 'ORA-00001'오류가 발생합니다. 코드를 살펴보면 먼저 두 시퀀스 nextval을 얻습니다. 그 다음에는 실제로 증가하는 것을 볼 수 있습니다. 그런 다음 삽입 쿼리를 실행하고 실패합니다. 인서트가 테이블에서 실행하고 쿼리하려고하는 두 개의 고유 한 인덱스 값을 가져올 수 있으며 아무 결과도 얻을 수 없습니다.

정확히 어떤 종류의 정보가이 문제의 범위를 좁히는 데 유용할지 모르겠지만, .NET에서 .NET 인덱스가 정수 인덱스 값으로 돌아가고 있다는 오라클 오류가 있다는 것을 알고 있습니다.

누군가 통찰력이 있다면 크게 감사하겠습니다!

+0

코드를 게시해야합니다. –

+0

테이블에 고유하지 않고 테이블에없는 고유 한 인덱스 제약 조건을 충족하는 경우 내가 생각할 수있는 유일한 논리적 인 작업은 사용자가 동일한 값으로 두 번 삽입하십시오. – xQbert

+0

최소한의 (그러나 완전한) 데이터베이스 스크립트와 문제를 재현 할 수있는 vb.net 코드를 게시해야합니다. – sstan

답변

0

"NEXTVAL"을 (를) 호출 할 때마다 증가했습니다.

시퀀스가있는 테이블에 삽입하려는 경우 "고유 제한 조건 위반"오류로 인해 실패 할 수 있습니다. 그러나 두 번째 시도는 성공할 것입니다. 시퀀스를 처음 사용할 때 확인해야하기 때문입니다.

선택가 (당신이 열 이름을 시퀀싱) 테이블 : 삽입하기 전에

이 선택 쿼리를 수행

는 여기에 솔루션입니다.

그 다음,

테이블 값 (...)에 삽입하십시오.

작동합니다.