다음을 통해 공유


키 집합 커서

키 집합 커서는 변경 내용을 검색하는 기능에서 정적 커서와 동적 커서 사이의 기능을 제공합니다. 정적 커서와 마찬가지로 결과 집합의 멤버 자격 및 순서에 대한 변경 내용을 항상 검색하지는 않습니다. 동적 커서와 마찬가지로 결과 집합의 행 값에 대한 변경 내용을 검색합니다.

키 집합 기반 커서는 키 집합이라고 하는 고유 식별자(키) 집합에 의해 제어됩니다. 키는 결과 집합의 행을 고유하게 식별하는 열 집합으로 구성됩니다. 키 집합은 쿼리 문에서 반환된 모든 행의 키 값 집합입니다.

키 집합 기반 커서를 사용하면 키가 커서의 각 행에 대해 빌드 및 저장되고 클라이언트 워크스테이션 또는 서버에 저장됩니다. 각 행에 액세스하면 저장된 키를 사용하여 데이터 원본에서 현재 데이터 값을 가져옵니다. 키 집합 기반 커서에서 키 집합이 완전히 채워지면 결과 집합의 구성원 자격이 고정됩니다. 그 후 멤버 자격에 영향을 주는 추가 또는 업데이트는 다시 열 때까지 결과 집합의 일부가 아닙니다.

사용자가 결과 집합을 스크롤할 때 데이터 값(키 집합 소유자 또는 다른 프로세스에 의해 변경됨)이 표시됩니다. 커서 외부에서 만든 삽입은 커서를 닫고 다시 여는 경우에만 표시됩니다. 커서 내부에서 만든 삽입은 결과 집합의 끝에 표시됩니다.

키 집합 기반 커서가 삭제된 행을 검색하려고 하면 행이 결과 집합에 "구멍"으로 표시됩니다. 행의 키가 키 집합에 있지만 행이 결과 집합에 더 이상 존재하지 않습니다. 행의 키 값이 업데이트되면 행이 삭제된 후 삽입된 것으로 간주되므로 이러한 행도 결과 집합의 구멍으로 표시됩니다. 키 집합 기반 커서는 항상 다른 프로세스에서 삭제한 행을 검색할 수 있지만, 선택적으로 자체적으로 삭제되는 행에 대한 키를 제거할 수 있습니다. 이 작업을 수행하는 키 집합 기반 커서는 삭제 기록이 제거되었으므로 자신의 삭제를 감지할 수 없습니다.

키 열에 대한 업데이트는 이전 키를 삭제한 다음 새 키를 삽입하는 것처럼 작동합니다. 커서를 통해 업데이트하지 않은 경우 새 키 값이 표시되지 않습니다. 커서를 통해 업데이트한 경우 결과 집합의 끝에 새 키 값이 표시됩니다.

키 집합 기반 커서의 변형으로, 키 집합 기반 표준 커서가 있습니다. 키 세트 기반 표준 커서에서는 커서를 열 때 결과 집합의 행 구성과 행 순서가 고정되며, 커서 소유자가 수행한 값 변경이나 다른 프로세스에서 커밋된 변경 사항이 표시됩니다. 변경 내용으로 인해 멤버 자격에 대한 행의 자격이 박탈되거나 행 순서에 영향을 줄 경우 커서를 닫았다가 다시 열지 않으면 행이 사라지거나 이동되지 않습니다. 삽입된 데이터는 표시되지 않지만 행을 가져올 때 기존 데이터에 대한 변경 내용이 나타납니다.

데이터 변경에 대한 민감도는 위에서 설명한 대로 다양한 상황에 따라 달라지므로 키 집합 기반 커서를 올바르게 사용하기가 어렵습니다. 그러나 애플리케이션이 동시 업데이트와 관련이 없는 경우 프로그래밍 방식으로 잘못된 키를 처리할 수 있으며 특정 키 행에 직접 액세스해야 하는 경우 키 집합 기반 커서가 작동할 수 있습니다. adOpenKeyset CursorTypeEnum을 사용하여 ADO에서 키 집합 커서를 사용하려는 것을 나타냅니다.

참고 항목

Forward-Only 커서
정적 커서
동적 커서