标记事务成功完成。
重点- 了解
$TLEVEL
- 如果没有当前事务,
ObjectScript TSTART
和SQL 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é不执行该命令。
示例可以将TCOMMIT
与TROLLBACK
和TSTART
命令一起使用。
嵌套TSTART/TCOMMIT
Caché支持TSTART/TCOMMIT
命令的嵌套,这样模块就可以正确地发出它们的TSTART/TCOMMIT
对,而独立于调用它们的模块或它们调用的模块中发出的其他TSTART/TCOMMIT
。事务的当前嵌套级别由特殊变量$TLEVEL
跟踪。事务在发出最外层的匹配TCOMMIT
时提交;即,当$TLEVEL
返回到0时。
可以通过调用TRolback1
回滚单个嵌套事务,也可以通过调用TRolback
回滚所有当前事务。TROLLBACK
回滚有效的整个事务-无论发出了多少级别的TSTART
-并将$TLEVEL
设置为0。
网络事务
要同步通过网络完成的事务,请使用ZSYNC
命令。
同步提交
TCOMMIT
命令请求将该事务中涉及的日志数据刷新到磁盘。是否等待此磁盘写入操作完成是一个可配置选项。
进入管理门户,选择[主页]>[配置]>[兼容性设置]。查看和编辑SynchCommit
的当前设置。
当设置为“true”时,TCOMMIT直到日志数据写入操作完成后才完成。当设置为“false”时,TCOMMIT
不等待写入操作完成。默认值为“false”。需要重新启动才能使对SynchCommit
设置的更改生效。
SQL和事务
CachéObjectScript和SQL TRANSACTION
命令完全兼容且可互换,但有以下例外:
如果没有当前事务,ObjectScript TSTART
和SQL START TRANSACTION
都会启动事务。但是,START TRANSACTION
不支持嵌套事务。因此,如果需要(或可能需要)嵌套事务,最好使用TSTART
启动事务。如果需要与SQL标准兼容,请使用START TRANSACTION
。
CachéObjectScript事务处理为嵌套事务提供有限的支持。SQL事务处理为事务内的保存点提供支持。