이 문서는 지원되지 않는 버전의 토토 결과을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 62.5. 토토 꽁 머니 고유성 점검버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

50.5. 인덱스 토토 결과 점검

토토 결과SQL 시행 사용 토토 결과 제약 조건토토 결과 한 인덱스, 여러 항목을 허용하지 않는 인덱스입니다 동일한 키로. 이 기능을 지원하는 액세스 방법 세트PG_AM.Amcanuniquetrue. (현재, B- 트리 만 지원합니다.)

MVCC 때문에 항상 복제를 허용해야합니다. 인덱스에 물리적으로 존재하는 항목 : 항목이 참조 할 수 있습니다. 단일 논리 행의 연속 버전으로. 우리의 행동 실제로 MVCC 스냅 샷이 포함 할 수 없다는 것입니다. 동일한 인덱스 키가있는 두 행. 이것은로 분해됩니다 새 행을 삽입 할 때 확인 해야하는 다음 사례 독특한 색인으로 :

  • 현재에 의해 충돌하는 유효한 행이 삭제 된 경우 거래, 괜찮습니다. (특히 업데이트 이후 새로운 삽입 전에 항상 이전 행 버전을 삭제합니다. 버전, 이것은 변경하지 않고 행에 업데이트 할 수 있습니다. 열쇠.)

  • 충돌 행을 삽입 한 경우 커뮤니케이션이 제대로 삽입되어야합니다 그 거래가 유발되는지 기다리십시오. 그것이 롤백된다면 그러면 갈등이 없습니다. 삭제하지 않고 커밋되는 경우 다시 충돌하면 독창성 위반이 있습니다. (안에 우리는 다른 거래가 끝날 때까지 기다리고 그런 다음 가시성 검사를 다시 실행하십시오.)

  • 마찬가지로, 충돌하는 유효한 행이 삭제 된 경우 그 대신 커미셔닝 된 트랜잭션 인 삽입자는 삽입해야합니다 그 거래가 커밋하거나 중단 될 때까지 기다린 다음 반복합니다. 테스트.

또한 독창성 위반을 제기하기 직전에 위 규칙에 따라 액세스 방법은 행의 라이성은 삽입되고 있습니다. 그것이 죽었다면 오류가 발생하지 않아야합니다. (이 경우에는 발생할 수 없습니다 방금 만들어진 행을 삽입하는 일반적인 시나리오 현재 거래. 발생할 수 있습니다동시에 토토 결과 인덱스 생성, 그러나)

이 테스트를 적용하려면 인덱스 액세스 방법이 필요합니다. 그 자체는 중복 키가있는 것으로 표시된 모든 행의 상태 커밋 상태 인덱스 내용에 따라. 이것은 의심 할 여지없이 추악합니다 비 모성이지만 중복 작업을 저장합니다. 그런 다음 절충 행에 대한 인덱스 검색이 새로운 삽입 장소를 찾는 동안 본질적으로 반복 행의 인덱스 항목. 더구나, 피해야 할 분명한 방법은 없습니다 충돌 점검이 없어서는 안될 인종 조건 새로운 인덱스 항목 삽입.

이 체계의 주요 제한은 없다는 것입니다. 지연된 독창성 점검을 지원하는 편리한 방법.