레코드 집합: 레코드 잠금(ODBC)

이 항목은 MFC ODBC 클래스에 적용됩니다.

이 항목에서는 다음 내용을 설명합니다.

레코드 집합을 사용하여 데이터 원본의 레코드를 업데이트하는 경우 다른 사용자가 레코드를 동시에 업데이트할 수 없도록 애플리케이션에서 레코드를 잠글 수 있습니다. 시스템에서 두 사용자가 동시에 레코드를 업데이트할 수 없으므로 두 사용자가 동시에 업데이트한 레코드의 상태는 정의되지 않습니다.

참고 항목

이 토픽은 대량 행 페치가 구현되지 않은 CRecordset에서 파생된 개체에 적용됩니다. 대량 행 페치를 구현한 경우 일부 정보가 적용되지 않습니다. 예를 들어 멤버 함수와 Update 멤버 함수를 호출할 Edit 수 없습니다. 대량 행 페치 에 대한 자세한 내용은 레코드 집합: 대량 레코드 가져오기(ODBC)를 참조하세요.

레코드 잠금 모드

데이터베이스 클래스는 두 가지 레코드 잠금 모드를 제공합니다.

  • 낙관적 잠금(기본값)

  • 비관적 잠금

레코드 업데이트는 다음 세 단계로 수행됩니다.

  1. 멤버 편집 함수를 호출하여 작업을 시작합니다.

  2. 현재 레코드의 적절한 필드를 변경합니다.

  3. Update 멤버 함수를 호출 하여 작업을 종료하고 일반적으로 업데이트를 커밋합니다.

낙관적 잠금은 호출 중에만 데이터 원본에 대한 레코드를 잠급 수 있습니다 Update . 다중 사용자 환경에서 낙관적 잠금을 사용하는 경우 애플리케이션에서 오류 조건을 처리 Update 해야 합니다. 비관적 잠금은 호출하는 즉시 레코드를 잠그고 호출 EditUpdate 할 때까지 레코드를 해제하지 않습니다(오류는 반환Update된 FALSE 값이 아니라 메커니즘을 통해 CDBException 표시됨). 비관적 잠금은 다른 사용자에게 잠재적인 성능 저하를 초래합니다. 동일한 레코드에 대한 동시 액세스는 애플리케이션 프로세스가 완료될 때까지 기다려야 할 수 있기 때문입니다 Update .

레코드 집합에서 레코드 잠금

레코드 집합 개체의 잠금 모드 를 기본값에서 변경하려면 호출 Edit하기 전에 모드를 변경해야 합니다.

레코드 집합의 현재 잠금 모드를 변경하려면

  1. SetLockingMode 멤버 함수를 호출하여 둘 중 하나 CRecordset::pessimistic 또는 CRecordset::optimistic를 지정합니다.

새 잠금 모드는 다시 변경하거나 레코드 집합을 닫을 때까지 기본 적용됩니다.

참고 항목

상대적으로 적은 ODBC 드라이버는 현재 비관적 잠금을 지원합니다.

참고 항목

레코드 집합(ODBC)
레코드 집합: 조인 수행(ODBC)
레코드 집합: 레코드 추가, 업데이트 및 삭제(ODBC)