张策:SQL Anywhere教程(11)

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

我们都知道,数据库中都使用事务这个概念来处理对数据库的操作。事务处理具有ACID的特点,分别代表原子性、一致性、隔离性和持久性。数据都采用标准的COMMIT和ROLLBACK来决定对事务的提交或回滚。一些数据库缺省具有“非链式”事务模式,一般不需显示指定COMMIT或ROLLBACK,如ASE、MS SQL Server;一些数据库缺省使用“链式”事务模式,需要明确指定COMMIT或ROLLBACK,如Oracle。

事务的开始与结束:

在ASA中,一个事务有两种开始的可能:

连接数据库后的第一个语句

一个事务结束后的第一个语句

一个事务有两种结束的标志:

COMMIT(大部分的DDL——数据定义语言,如CREATE TABLE、ALTER...、DROP...——都采用自动提交技术)

ROLLBACK(与数据库断开连接执行一个隐式的回滚)

在ASA中,控制事务的提交与回滚通过Rollback Log这个重要的手段完成。回滚日志(Rollback Log)对于每个连接均有一个,存在于数据库内存及数据库文件中。它里面包含的针对事务对数据的修改的“反向”SQL语句。例如,我们从dbiSQL中发出命令:INSERT INTO employee VALUES(250, ...),那么反向SQL里面,也就是回滚日志里面的内容就是DELETE employee WHERE emp_id = 250。在后续事务结束的时候,倘若我们发出COMMIT语句提交修改,那么回滚日志里面的内容就自动删除;若我们发出ROLLBACK语句回滚事务,那么ASA将执行回滚日志中与该事务相关的语句,然后删除回滚日志的内容。这样,就实现了事务的提交和回滚。

当然,在ASA处理事务的过程中,也支持SAVEPOINT(保存点)。它可支持事务回滚到保存点处,而非全部回滚。保存点可以嵌套。SAVEPOINT 语句定义事务执行过程中的中间点。使用 ROLLBACK TO SAVEPOINT 语句可以撤消该点后的所有更改。执行了 RELEASE SAVEPOINT 语句或事务结束后,则不能再使用该保存点。请注意,保存点对提交没有影响。当执行 COMMIT 时,该事务内的所有更改都在数据库中永久生效。RELEASE SAVEPOINT 或 ROLLBACK TO SAVEPOINT 命令不会释放任何锁:只有在事务结束后才会释放锁。

下一部分将继续介绍ASA的锁机制和事务隔离级别。 <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值