BEGIN WORK 语句

使用 BEGIN WORK 语句来启动事务(COMMIT WORK 或 ROLLBACK WORK 语句终止的一系
列数据库操作,数据库服务器将其作为单个工作单元)。该语句是 SQL ANSI/ISO 标准的扩展。
用法
BEGIN WORK 语句只在支持事务日志记录的数据库中有效。该语句在 ANSI 兼容的数据库中无
效。
在事务锁定期间 UPDATE 、DELETE 、INSERT 或 MERGE 语句影响的每行将在整个事务中保
持锁定。包含许多这样的语句的事务或包含影响许多行的语句的事务,可超过您的操作系统或数据库服务器对同步锁定数目施加的限制。
如果没有其他用户访问该表,您可以在开始事务后通过使用 LOCK TABLE 语句来避免锁定限制并减少锁定开销。如同其它锁定一样,此表锁定在事务终止时释放。在 BEGIN WORK 的示例 的示例上的事务包含一条 LOCK TABLE 语句。
重要: 仅当事务不在进行时发出 BEGIN WORK 语句。如果当在事务中时发出一个 BEGIN WORK 语句,数据库服务器返回一条错误。
WORK 关键字是可选的。以下两条语句等价:
BEGIN;
BEGIN WORK;
在读取 SQL 源代码时忽略 WORK 关键字,不要混淆 SQL 的 BEGIN 语句和 SPL 关键字
BEGIN ,它们和 END 关键字一起可用于 SPL 例程内定义语句块的分隔符。
在 GBase 8s ESQL/C 中,如果在 WHENEVER 语句调用的 UDR 中使用 BEGIN WORK 语句,
则应在 ROLLBACK WORK 语句之前指定 WHENEVER SQLERROR CONTINUE 和 WHENEVER
SQLWARNING CONTINUE 。如果 ROLLBACK WORK 语句碰到错误或者警告,则这些语句可防止程序发生无限循环。
BEGIN WORK 和兼容 ANSI 的数据库
在兼容 ANSI 的数据库中,不需要 BEGIN WORK 语句,因为事务是隐式的;每个 SQL 语句均
在事务内部发生。当您在以下任一语句之后立即使用 BEGIN WORK 语句时,数据库服务器生成
一条警告:
⚫ DATABASE
⚫ COMMIT WORK
⚫ CREATE DATABASE
⚫ ROLLBACK WORK
在兼容 ANSI 的数据库中,如果您在任何其它语句之后使用 BEGIN WORK 语句,数据库服务器
会返回一条错误。
BEGIN WORK WITHOUT REPLICATION (ESQL/C)
当您使用 Enterprise Replication 进行数据复制时,可使用 BEGIN WORK WITHOUT
REPLICATION 语句来启动不复制到其它数据库服务器的事务。
您无法将 BEGIN WORK WITHOUT REPLICATION 作为 GBase 8s ESQL/C 应用程序中的独立植入语句执行。而只能间接执行此语句。可以使用以下两种方法之一:
⚫ 可以使用 PREPARE 和 EXECUTE 语句的组合来准备并执行 BEGIN WORK WITHOUT
REPLICATION 语句。
⚫ 可以使用 EXECUTE IMMEDIATE 语句,只用单独一个步骤就准备并执行 BEGIN WORK
WITHOUT REPLICATION 。
不能将 DECLARE 游标 CURSOR WITH HOLD 与 BEGIN WORK WITHOUT REPLICATION 语
句一起使用。
有关数据复制的更多信息,请参阅 GBase 8s Enterprise Replication 指南。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值