Функция 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
Системные параметры