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_paramMaxVerPages 및 JET_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
시스템 매개 변수