Oracle数据库数据操作和控制语言详解
  其中lock_mode有两个选项:
   share 共享方式 
   exclusive 唯一方式 
例: 
以下为引用的内容: LOCK TABLE intentory IN EXCLUSIVE MODE  
死锁 
  当两个事务都被锁定,并且互相都在等待另一个被解锁,这种情况称为死锁。 
  当出现死锁时,ORACLE将检测死锁条件,并返回一个异常。 
事务控制 
  事务控制包括协调对相同数据的多个同步的访问。当一个用户改变了另一个用户正在使用的数据时,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;  
   |