키 집합 커서(데이터베이스 엔진)
키 집합 커서의 멤버 자격과 행 순서는 커서가 열릴 때 고정됩니다. 키 집합 커서는 키 집합이라는 고유 식별자 집합으로 제어되며 키는 결과 집합에서 행을 고유하게 식별하는 열 집합으로 작성됩니다. 키 집합은 커서가 열려 있을 때 SELECT 문의 조건에 맞는 모든 행의 키 값 집합입니다. 키 집합 커서의 키 집합은 커서가 열려 있을 때 tempdb에 작성됩니다.
커서 소유자가 만들거나 다른 사용자가 커밋한 키 집합이 아닌 열에서 데이터 값을 변경하면 사용자가 커서를 스크롤할 때 이 변경 내용이 표시됩니다. 커서 밖에서 데이터베이스에 삽입하는 내용은 커서를 닫았다가 다시 열 때까지 커서에 표시되지 않습니다. ODBC SQLSetPos 함수 등의 API 함수를 사용하여 커서를 통해 삽입하는 내용은 커서 끝에 표시됩니다. 커서가 열린 후 삭제된 행을 인출하려고 하면 @@FETCH_STATUS가 "행 없음" 상태를 반환합니다. 키 열에 대한 업데이트는 기존 키 값을 삭제한 후 새 키 값을 삽입하는 것과 같습니다. 커서를 통해 업데이트하지 않는 경우 새 키 값이 표시되지 않습니다. SQLSetPos 등의 API 함수나 Transact-SQL WHERE CURRENT OF 절을 사용하여 커서를 통해 업데이트하고 SELECT 문의 FROM 절에 JOIN 조건이 없는 경우 업데이트 내용이 커서 끝에 표시됩니다. 삽입 내용의 FROM 절에 원격 테이블이 포함되는 경우에는 새 키 값이 표시되지 않습니다. 기존 키 값을 검색하려고 하면 삭제된 행과 마찬가지로 행 없음 인출 상태가 반환됩니다.
[!참고] 원격 테이블에 키 집합 커서를 선언할 때 계산 열의 인덱스를 사용할 수 없습니다. 다른 인덱스를 만들어 해당 원격 테이블에 대한 고유 키를 제공할 수 있습니다.