JetDelete 函数

适用于: Windows |Windows Server

JetDelete 函数

JetDelete 函数删除数据库表中的当前记录。

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

parameters

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 KB,但将来的版本可能会更改。

Windows XP 及更高版本。 JetDelete 可以调用回调函数,包括 JET_cbtypBeforeDelete 和 JET_cbtypAfterDelete。

请务必了解在单个事务中执行大量更新操作的影响。 数据库引擎必须在版本存储中跟踪数据库的每个更新。 版本存储保存数据库中每个记录或索引条目的所有不同版本的实时记录,所有活动事务都可以看到这些记录或索引项。 这些版本用于支持数据库引擎使用的多版本并发控制,以支持使用快照隔离的事务。 一旦数据库引擎耗尽了用于存储这些版本的资源,那么在一些事务结束以允许回收这些资源之前,它将无法再接受进一步的更改。 当引擎处于此状态时,所有更新都将失败并JET_errVersionStoreOutOfMemory。 数据库引擎可用于存储这些版本的资源可以使用 JetSetSystemParameterJET_paramMaxVerPagesJET_paramGlobalMinVerPages进行控制。

要求

要求

客户端

需要 Windows Vista、Windows XP 或 Windows 2000 Professional。

服务器

需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。

标头

在 Esent.h 中声明。

Library

使用 ESENT.lib。

DLL

需要ESENT.dll。

另请参阅

JET_ERR
JET_SESID
JET_TABLEID
JetOpenTempTable
JetPrepareUpdate
系统参数