주 키 (IsIdentity = Yes)와 고유 키 제약 조건을 구성하는 세 개의 다른 필드가있는 SqlServer 2008 테이블이 있습니다.고유 키 제약 조건 위반시 기본 키 Identity 값 증가
또한 테이블에 레코드를 삽입하는 저장 프로 시저가 있고 SqlConnection 개체를 사용하여 C#을 통해 sproc을 호출합니다.
는 C#의 sproc에 호출
의 sproc 호출이 고유 키 제약 조건을 위반
는, SQLException이가 발생 ....는 C#의 sproc에 호출이 고유 키 제약 조건을 위반했을 경우에 그러나 나는 흥미로운 결과를 발견했습니다, 잘 작동 - 놀랍지도 않고 멋진 것도 아닙니다. 그러나 테이블에 성공적으로 추가 된 다음 레코드가 이전 레코드보다 정확히 하나가 아닌 PK 값을 가지고 있음을 알게되었습니다.예 : 테이블에 PK 값이 1, 2,3,4 및 5입니다. sproc은 여섯 번째 레코드를 삽입하려고하지만 고유 키 제약 조건을 위반하므로 여섯 번째 레코드가 삽입되지 않습니다. 그런 다음 sproc은 다른 레코드를 삽입하려고 시도하고 이번에는 성공합니다. -이 새 레코드의 PK 값은 6 대신 7입니다.
이 정상적인 동작입니까? 그렇다면 왜 그런지 이유를 설명해 주시겠습니까? (레코드를 삽입하지 못한 경우 PK 인덱스가 증가하는 이유는 무엇입니까?)
이것이 정상적인 동작이 아닌 경우 이러한 증상이 나타나는 이유에 대한 힌트를 제공 할 수 있습니까?
예. 절대 ID 필드를 무시하지 않아도됩니다. – HLGEM