事务控制
事务控制包括协调对相同数据的多个同步的访问。当一个用户改变了另一个用户正在使用的数据时,oracle使用事务控制谁可以操作数据。
事务
事务表示工作的一个基本单元,是一系列作为一个单元被成功或不成功操作的SQL语句。在SQL和PL/SQL中有很多语句让程序员控制事务。程序员可以:
1、显式开始一个事物,选择语句级一致性或事务级一致性
2、设置撤销回滚点,并回滚到回滚点 3、完成事务永远改变数据或者放弃修改。 事务控制语句
语句 |
用途 |
Commit |
完成事务,数据修改成功并对其他用户开放 |
Rollback |
撤销事务,撤销所有操作 |
rollback to savepoint |
撤销在设置的回滚点以后的操作 |
set transaction |
响应事务或语句的一致性;特别对于事务使用回滚段 | 例:
以下为引用的内容: BEGIN UPDATE checking SET balance=balance-5000 WHERE account='Kieesha';
INSERT INTO checking_log(action_date,action,amount) VALUES (SYSDATE,'Transfer to brokerage',-5000);
UPDATE brokerage SET cash_balance=cash_balance+5000 WHERE account='Kiesha';
INSERT INTO brokerage_log(action_date,action,amount) VALUES (SYSDATE,'Tracfer from checking',5000)
COMMIT
EXCEPTION WHEN OTHERS ROLLBACK
END | Savepoint 和 部分回滚(Partial Rollback)
在SQL和PL/SQL中Savepoint是在一事务范围内的中间标志。经常用于将一个长的事务划分为小的部分。保留点Savepoint可标志长事务中的任何点,允许可回滚该点之后的操作。在应用程序中经常使用Savepoint;例如一过程包含几个函数,在每个函数前可建立一个保留点,如果函数失败,很容易返回到每一个函数开始的情况。在回滚到一个Savepoint之后,该Savepoint之后所获得的数据封锁被释放。为了实现部分回滚可以用带TO Savepoint子句的ROLLBACK语句将事务回滚到指定的位置。
例
以下为引用的内容: BEGIN
INSERT INTO ATM_LOG(who,when,what,where) VALUES ('Kiesha',SYSDATE,'Withdrawal of $100','ATM54') SAVEPOINT ATM_LOGGED;
UPDATE checking SET balance=balance-100 RETURN balance INTO new_balance;
IF new_balance<0 THEN ROLLBACK TO ATM_LOGGED; COMMIT RAISE insufficient_funda; END IF
END | 关键字SAVEPOINT是可选的,所以下面两个语句是等价的:
以下为引用的内容: ROLLBACK TO ATM_LOGGED; ROLLBACK TO SAVEPOINT ATM_LOGGED; | |
阅读(351) | 评论(0) | 转发(0) |