文章目录

第二十四章 Caché 命令大全 TCOMMIT 命令

标记事务成功完成。

重点
  1. 了解$TLEVEL
  2. 如果没有当前事务,ObjectScript TSTARTSQL START TRANSACTION都会启动事务。但是,START TRANSACTION不支持嵌套事务。因此,如果需要(或可能需要)嵌套事务,最好使用TSTART启动事务。
大纲
TCOMMIT:pc
TC:pc

参数

pc - 可选-后置条件表达式。

描述

TCOMMIT标记由相应的TSTART发起的事务的成功结束。

TCOMMIT递减$TLEVEL特殊变量的值。仅当$TLEVEL变为0时,Caché才终止事务。通常这是TCOMMIT被调用的次数与TSTART一样多的时候。直到$TLEVEL=0,嵌套事务期间所做的更改才会提交。

$TLEVEL已为0时调用TCOMMIT会导致<command>错误。如果在没有事务正在进行时发出TCOMMIT,当TCOMMIT命令的数量大于TSTART命令的数量时,或者在TROLLBACK命令之后发出TCOMMIT,则可能会发生这种情况。相应的$ZERROR值由<command>、错误位置(例如+3^mytest)和数据文字*NoTransaction组成。

参数

pc

可选的后置条件表达式。如果后置条件表达式为TRUE(计算结果为非零数值),则Caché执行该命令。如果后置条件表达式为假(计算结果为零),则Caché不执行该命令。

示例

可以将TCOMMITTROLLBACKTSTART命令一起使用。

注意

嵌套TSTART/TCOMMIT

Caché支持TSTART/TCOMMIT命令的嵌套,这样模块就可以正确地发出它们的TSTART/TCOMMIT对,而独立于调用它们的模块或它们调用的模块中发出的其他TSTART/TCOMMIT。事务的当前嵌套级别由特殊变量$TLEVEL跟踪。事务在发出最外层的匹配TCOMMIT时提交;即,当$TLEVEL返回到0时。

可以通过调用TRolback1回滚单个嵌套事务,也可以通过调用TRolback回滚所有当前事务。TROLLBACK回滚有效的整个事务-无论发出了多少级别的TSTART-并将$TLEVEL设置为0。

网络事务

要同步通过网络完成的事务,请使用ZSYNC命令。

同步提交

TCOMMIT命令请求将该事务中涉及的日志数据刷新到磁盘。是否等待此磁盘写入操作完成是一个可配置选项。

进入管理门户,选择[主页]>[配置]>[兼容性设置]。查看和编辑SynchCommit的当前设置。

第二十四章 Caché 命令大全 TCOMMIT 命令_Caché

当设置为“true”时,TCOMMIT直到日志数据写入操作完成后才完成。当设置为“false”时,TCOMMIT不等待写入操作完成。默认值为“false”。需要重新启动才能使对SynchCommit设置的更改生效。

SQL和事务

CachéObjectScript和SQL TRANSACTION命令完全兼容且可互换,但有以下例外:

如果没有当前事务,ObjectScript TSTARTSQL START TRANSACTION都会启动事务。但是,START TRANSACTION不支持嵌套事务。因此,如果需要(或可能需要)嵌套事务,最好使用TSTART启动事务。如果需要与SQL标准兼容,请使用START TRANSACTION

CachéObjectScript事务处理为嵌套事务提供有限的支持。SQL事务处理为事务内的保存点提供支持。