使用 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 语句碰到错误或者警告,则这些语句可防 止程序发生无限循环。