Функция 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

Функция обратного вызова каким-то образом завершилась сбоем. Например, нарушения доступа в функциях обратного вызова перехватываются и претворяются в JET_errCallbackFailed. Эта ошибка будет возвращена только Windows XP и более поздних версий.

JET_errClientRequestToStopJetService

Невозможно выполнить операцию, так как все действия экземпляра, связанного с сеансом, прекратились в результате вызова JetStopService.

JET_errIllegalOperation

Курсор, заданный tableid , не поддерживает удаление. См. раздел «Примечания».

JET_errInstanceUnavailable

Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, столкнулся с неустранимой ошибкой, требующей отмены доступа ко всем данным для защиты целостности этих данных. Эта ошибка будет возвращена только в Windows XP и более поздних выпусках.

JET_errNoCurrentRecord

Курсор, указанный tableid , не находится в записи.

JET_errNotInitialized

Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, еще не инициализирован.

JET_errRestoreInProgress

Невозможно выполнить операцию, так как операция восстановления выполняется в экземпляре, связанном с сеансом.

JET_errPermissionDenied

Ядро СУБД не имеет достаточных разрешений для удаления записи. Это может произойти, если файл базы данных был открыт с доступом только для чтения.

JET_errRollbackError

Буфер обновления (см. Раздел JetPrepareUpdate) существует, но не все изменения, внесенные в столбцы типа JET_coltypLongText и (или) столбцы типа JET_coltypLongBinary могут быть откатлены.

JET_errSessionSharingViolation

Использование одного сеанса из нескольких потоков одновременно недопустимо. Эта ошибка будет возвращена только в Windows XP и более поздних выпусках.

JET_errTermInProgress

Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, завершает работу.

JET_errTransReadOnly

Транзакция доступна только для чтения и не поддерживает операции удаления.

JET_errVersionStoreOutOfMemory

Операция завершилась сбоем, так как недостаточно памяти для хранения транзакционных сведений об обновлении.

JET_errWriteConflict

Другой сеанс ранее заблокировал запись для обновления. Обновление, предпринятая этим сеансом, завершится ошибкой.

При успешном выполнении валюта остается непосредственно перед следующей записью. Если удаленная запись была последней в таблице, валюта остается в конце таблицы (то есть после новой последней записи). Если удаленная запись была единственной записью в таблице, валюта устанавливается в начало.

Соответствующие индексы обновляются автоматически.

Если обновление подготовлено (с помощью JetPrepareUpdate), оно будет отменено. Буфер обновления будет сброшен.

При сбое валюта остается неизменной. Если обновление подготовлено (см. JetPrepareUpdate), буфер обновления может быть сброшен.

Комментарии

Не все таблицы поддерживают удаление строк. Временная таблица обычно не поддерживает удаление строк. Удаление записей может быть включено во временных таблицах по многим причинам, некоторые из которых:

  • JET_bitTTUpdatable был указан во время создания.

  • Большие временные таблицы могут поддерживать удаление, если они были созданы с помощью JET_bitTTScrollable или JET_bitTTIndexed. Пороговое значение, при котором временная таблица становится "большой", в настоящее время составляет 64 килобайта, но оно может быть изменено в будущих выпусках.

Windows XP и более поздних версий. Функции обратного вызова могут вызываться с помощью JetDelete, включая JET_cbtypBeforeDelete и JET_cbtypAfterDelete.

Важно понимать влияние выполнения большого количества операций обновления внутри одной транзакции. Каждое обновление базы данных должно отслеживаться ядром СУБД в хранилище версий. Хранилище версий содержит динамическую запись всех различных версий каждой записи или записи индекса в базе данных, которая может быть видна для всех активных транзакций. Эти версии используются для поддержки многоверсийного управления параллелизмом, используемого ядром СУБД для поддержки транзакций, использующих snapshot изоляцию. После того как ядро СУБД исчерпает ресурсы, используемые для хранения этих версий, оно больше не сможет принимать дальнейшие изменения, пока некоторые транзакции не будут завершены, чтобы позволить освободить эти ресурсы. Когда подсистема находится в этом состоянии, все обновления будут завершаться сбоем с JET_errVersionStoreOutOfMemory. Ресурсами, доступными ядру СУБД для хранения этих версий, можно управлять с помощью JetSetSystemParameter с JET_paramMaxVerPages и JET_paramGlobalMinVerPages.

Требования

Требование Значение

Клиент

Требуется Windows Vista, Windows XP или Windows 2000 Профессиональная.

Сервер

Требуется Windows Server 2008, Windows Server 2003 или Windows 2000 Server.

Верхняя часть

Объявлено в Esent.h.

Библиотека

Используйте ESENT.lib.

DLL

Требуется ESENT.dll.

См. также:

JET_ERR
JET_SESID
JET_TABLEID
JetOpenTempTable
JetPrepareUpdate
Системные параметры