在 GBase 中,所有的用户的活动都发生在一个事务中。GBase 数据库引擎提供的事务处理能力完全满足事务处理要求的
ACID 准则:原子性(atomicity), 一致性(consistency),隔离性(isolation)和持久性(durability)。
1事务的启动模式
GBase 数据库与主流数据库相同,在事务的启动上提供两种模式,即自动提交(auto-commit)和非自动提交。每个数据库连接,均可设置自己当前连接的自动提交状态。
当 AUTOCOMMIT=1 时,启动自动提交模式,每个 SQL 语句自己形成一个事务。当AUTOCOMMIT=0
时,关闭自动提交模式,那么就认为用户总是有一个打开的事务。一个 SQL COMMIT 或 ROLLBACK 语句能够结束当前的事务或刚启动的事务。COMMIT 意味着当前事务中的修改是永久的,对其它用户可见。
ROLLBACK 语句,取消了当前事务中的所有修改。
即使连接使用自动提交模式, 用户能仍然能使用显式的 START
TRANSACTION 或 BEGIN 语句来执行一个多语句事务并使用 COMMIT 或ROLLBACK 来结束它。
2事务的提交或回滚
GBase 用预先设定的自动提交模式开始每个客户端的连接。当启动自动提交模式的时候,如果一条语句的执行未发生错误,GBase 在该 SQL 语句之后做提交工作。
如果用户关闭自动提交模式而且没有调用一个事务的显式提交而关闭一个连接,那么 GBase 回滚用户的事务。
如果一个 SQL 语句返回一个错误, 那提交/回滚行为依赖错误而采取相应
的操作。参考死锁监测和回滚。
下面的 SQL 语句(和它们的同义字)导致 GBase 隐含的提交当前事务:
l ALTER TABLE, BEGIN, CREATE INDEX, DROP DATABASE, DROP INDEX, DROP TABLE, LOAD MASTER DATA, LOCK TABLES, RENAME TABLE, SET AUTOCOMMIT=1 , START TRANSACTION, TRUNCATE, UNLOCK TABLES
l CREATE TABLE,TRUNCATE TABLE,DROP DATABASE 和CREATE DATABASE 导致隐含提交。
l AcidDB 中CREATE TABLE 语句作为一个单事务。这意味着在那个事务中来自用户的 ROLLBACK 不撤销用户执行的 CREATE TABLE 语句。
3事务控制语句
GBase 提供的事务控制语句包括:
l 事务控制语句,包括:
|
START
TRANSACTION |
|
COMMIT |
|
ROLLBACK |
l 设置事务属性语句,包括:
|
SET [GLOBAL | SESSION] TRANSACTION ISOLATION
LEVEL |
|
SET
AUTOCOMMIT |
保存点控制语句,包括:SavePoint、Rollback To
Savepoi




