GBase8s COMMIT WORK 语句

143 篇文章 3 订阅
142 篇文章 0 订阅

COMMIT WORK 语句
使用 COMMIT WORK 语句提交从事务开始时对数据库所作的全部修改。
在这里插入图片描述

COMMIT WORK 语句通知数据库服务器您到达了必须作为单个单元完成的一系列语句的末尾。数据库服务器采取必需的步骤来确保事务做出的所有修改正确完成且保存到磁盘。
当确定希望保留所有从事务开始起对其数据库所做的所有改变时,仅在带有事务日志记录的数据库的多语句操作结束时使用 COMMIT WORK。
COMMIT WORK 语句释放所有行锁定和表锁定。
WORK 关键字在 COMMIT WORK 语句中是可选的。以下两条语句等价:
COMMIT;
COMMIT WORK;
以下示例显示了 BEGIN WORK 和 COMMIT WORK 语句所限制的事务。
BEGIN WORK;
DELETE FROM call_type WHERE call_code = ‘O’;
INSERT INTO call_type VALUES (‘S’, ‘order status’);
COMMIT WORK;
在此示例中,用户首先从 call_type 表中删除行,其中表的 call_code 列的值为 O 。用户然后在其中 call_code 列的值为 S 的 call_type 表中插入一个新的行。数据库服务器保证两个操作同时成功或不成功。在 GBase 8s ESQL/C 中,COMMIT WORK 语句关闭所有打开的游标(除了那些使用 WITH HOLD
选项声明的游标。)
在不兼容 ANSI 的数据库中发出 COMMIT WORK
在不兼容 ANSI 但支持事务日志记录的的数据库中,如果您用 BEGIN WORK 语句启动事务,就必须在事务结束时发出 COMMIT WORK 语句。在这种情况下,如果未能发出一个 COMMIT WORK语句,则数据库回滚事务对数据库所做出的任何修改。
然而,如果没有发出 BEGIN WORK 语句,每个语句会在自己的事务中执行。这些单语句事务不需要 BEGIN WORK 语句或 COMMIT WORK 语句。
显式的 DB-Access 事务
当在不兼容 ANSI 但是支持事务日志记录的数据库中以交互方式使用 DB-Access 时,如果选择Commit 菜单但是在 BEGIN WORK 语句启动事务以后没有发出 COMMIT WORK 语句,则DB-Access 会自动地提交数据,但是会发出以下警告:
Warning: Data commit is a result of unhandled exception in TXN PROC/FUNC
此警告是为了提醒您显式地发出 COMMIT WORK 以结束 BEGIN WORK 启动的事务。
然而,在非交互方式中,如果没有发出 COMMIT WORK 语句就结束会话,则 DB-Access 将会回
滚当前的事务。
在兼容 ANSI 的数据库中发出 COMMIT WORK
在兼容 ANSI 的数据库中,您不需要 BEGIN WORK 来标记事务的开始。您仅需要标记每个事务的结束,因为事务总是有效的。新的事务在每个 COMMIT WORK 或 ROLLBACK WORK 语句后自动启动。然而,您必须发出显式 COMMIT WORK 语句来标记每个事务的结束。如果无法这样做,数据库服务器回滚事务对数据库所做的任何修改。
然而在兼容 ANSI 的数据库中,如果在不发出 CLOSE DATABASE 、COMMIT WORK 或
DISCONNECT 语句的情况下,便在非交互式方式下退出 DB-Access 而没有遇到错误,则数据库服务器自动提交任何打开的事务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值