다음을 통해 공유


JetDelete 함수

적용 대상: Windows | Windows Server

JetDelete 함수

JetDelete 함수는 데이터베이스 테이블의 현재 레코드를 삭제합니다.

    JET_ERR JET_API JetDelete(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid
    );

매개 변수

sesid

API 호출에 사용할 데이터베이스 세션 컨텍스트입니다.

tableid

데이터베이스 테이블의 커서입니다. 현재 행이 삭제됩니다.

반환 값

이 함수는 다음 반환 코드 중 하나를 사용하여 JET_ERR 데이터 형식을 반환합니다. 가능한 ESE 오류에 대한 자세한 내용은 확장 가능한 스토리지 엔진 오류오류 처리 매개 변수를 참조하세요.

반환 코드

설명

JET_errSuccess

작업이 성공적으로 완료되었습니다.

JET_errCallbackFailed

콜백 함수가 어떤 방식으로도 실패했습니다. 예를 들어 콜백 함수의 액세스 위반이 catch되어 JET_errCallbackFailed 변환됩니다. 이 오류는 Windows XP 이상에서만 반환됩니다.

JET_errClientRequestToStopJetService

JetStopService 호출로 인해 세션과 연결된 instance 모든 작업이 중단되었으므로 작업을 완료할 수 없습니다.

JET_errIllegalOperation

tableid로 지정된 커서는 삭제를 지원하지 않습니다. 주의 섹션을 참조하십시오.

JET_errInstanceUnavailable

세션과 연결된 instance 해당 데이터의 무결성을 보호하기 위해 모든 데이터에 대한 액세스를 해지해야 하는 심각한 오류가 발생하여 작업을 완료할 수 없습니다. 이 오류는 Windows XP 이상 릴리스에서만 반환됩니다.

JET_errNoCurrentRecord

tableid로 지정된 커서가 레코드에 없습니다.

JET_errNotInitialized

세션과 연결된 instance 아직 초기화되지 않았기 때문에 작업을 완료할 수 없습니다.

JET_errRestoreInProgress

세션과 연결된 instance 복원 작업이 진행 중이므로 작업을 완료할 수 없습니다.

JET_errPermissionDenied

데이터베이스 엔진에 레코드를 삭제할 수 있는 충분한 권한이 없습니다. 이 문제는 데이터베이스 파일이 읽기 전용 액세스 권한으로 열린 경우에 발생할 수 있습니다.

JET_errRollbackError

업데이트 버퍼( JetPrepareUpdate 참조)가 있지만 형식의 열 JET_coltypLongText 및/또는 형식 JET_coltypLongBinary 열에 대한 모든 변경 내용을 롤백할 수 있는 것은 아닙니다.

JET_errSessionSharingViolation

둘 이상의 스레드에서 동시에 동일한 세션을 사용하는 것은 불법입니다. 이 오류는 Windows XP 이상 릴리스에서만 반환됩니다.

JET_errTermInProgress

세션과 연결된 instance 종료 중이므로 작업을 완료할 수 없습니다.

JET_errTransReadOnly

트랜잭션은 읽기 전용 트랜잭션이며 삭제를 지원하지 않습니다.

JET_errVersionStoreOutOfMemory

업데이트에 대한 트랜잭션 정보를 보존할 메모리가 부족하여 작업이 실패했습니다.

JET_errWriteConflict

다른 세션에서는 이전에 업데이트를 위해 레코드를 잠갔습니다. 이 세션에서 시도한 업데이트가 실패합니다.

성공하면 통화가 다음 레코드 바로 앞에 남습니다. 삭제된 레코드가 테이블의 마지막 레코드인 경우 통화는 테이블의 끝에 남아 있습니다(즉, 새 마지막 레코드 이후). 삭제된 레코드가 테이블에서 유일한 레코드인 경우 통화가 시작 부분으로 설정됩니다.

적절한 인덱스가 자동으로 업데이트됩니다.

JetPrepareUpdate를 사용하여 업데이트가 준비되면 취소됩니다. 업데이트 버퍼가 다시 설정됩니다.

실패 시 통화는 변경되지 않은 상태로 유지됩니다. 업데이트가 준비되면( JetPrepareUpdate 참조) 업데이트 버퍼가 다시 설정될 수 있습니다.

설명

모든 테이블이 행 삭제를 지원하는 것은 아닙니다. 임시 테이블은 일반적으로 행 삭제를 지원하지 않습니다. 여러 가지 이유로 임시 테이블에서 레코드 삭제를 사용하도록 설정할 수 있으며, 그 중 일부는 다음과 같습니다.

  • JET_bitTTUpdatable 만드는 동안 지정되었습니다.

  • 대규모 임시 테이블은 JET_bitTTScrollable 또는 JET_bitTTIndexed 사용하여 만든 경우 삭제를 지원할 수 있습니다. 임시 테이블이 "큰" 임계값은 현재 64킬로바이트이지만 향후 릴리스에서 변경될 수 있습니다.

Windows XP 이상. 콜백 함수는 JET_cbtypBeforeDelete 및 JET_cbtypAfterDelete 포함하여 JetDelete에서 호출할 수 있습니다.

단일 트랜잭션 내에서 많은 수의 업데이트 작업을 수행할 때의 영향을 이해하는 것이 중요합니다. 데이터베이스에 대한 각 업데이트는 버전 저장소의 데이터베이스 엔진에서 추적해야 합니다. 버전 저장소는 모든 활성 트랜잭션에서 볼 수 있는 데이터베이스의 각 레코드 또는 인덱스 항목의 모든 다른 버전의 라이브 레코드를 보유합니다. 이러한 버전은 스냅샷 격리를 사용하는 트랜잭션을 지원하기 위해 데이터베이스 엔진에서 사용하는 다중 버전 동시성 제어를 지원하는 데 사용됩니다. 데이터베이스 엔진이 이러한 버전을 저장하는 데 사용되는 리소스를 모두 사용한 후에는 일부 트랜잭션이 이러한 리소스를 회수할 수 있도록 종료될 때까지 더 이상 추가 변경 내용을 수락할 수 없습니다. 엔진이 이 상태이면 JET_errVersionStoreOutOfMemory 모든 업데이트가 실패합니다. 이러한 버전을 저장하기 위해 데이터베이스 엔진에서 사용할 수 있는 리소스는 JET_paramMaxVerPagesJET_paramGlobalMinVerPagesJetSetSystemParameter를 사용하여 제어할 수 있습니다.

요구 사항

요구 사항

클라이언트

Windows Vista, Windows XP 또는 Windows 2000 Professional이 필요합니다.

서버

Windows Server 2008, Windows Server 2003 또는 Windows 2000 Server가 필요합니다.

머리글

Esent.h에 선언되었습니다.

라이브러리

ESENT.lib를 사용합니다.

DLL

ESENT.dll 필요합니다.

참고 항목

JET_ERR
JET_SESID
JET_TABLEID
JetOpenTempTable
JetPrepareUpdate
시스템 매개 변수