Oracle--事务

事务

在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么完全成功执行,完成整个工作单元操作,要么一点也不执行。

  主要作用:确保数据库的完整性。

  commit 提交   rollback回滚

例如:

银行转账(业务) 张三 转账1000给李四: 执行多少条SQL, 最少两条SQL
  1) update 张三的余额 -1000
  2) update 李四的余额, + 1000

--使用PL/SQL 模拟转账
begin
   --张三余额 -60000
   update account set balance = balance - 60000  where name ='zs';
  
  -- 李四 + 60000
   update account set balance = balance + 60000  where name ='ls';
   commit;
   dbms_output.put_line('转账成功');
   
   exception
    when others  then
      rollback;
      dbms_output.put_line('转账失败');  
end;

  事务的开始: 从执行的第一条SQL语句开始
  事务的结束: 执行commit(提交, 把数据确定写入表中),或者执行rollback(回滚, 这个事务所做的所有的sql 都撤销)
  确保多条SQL语句在同一个事务中, 数据库把这个些SQL写在同一个PL/SQL,
    java 程序那边: ****事务加载业务层****
    行锁: 给表中的某一行数据加锁, 对修改数据(update, delete)有效, 不影响查询数据
*** commit: 没有异常,写commit(表示全部成功)
*** 出现异常, 写rollback(全部失败), 把刚刚这个事务所有的sql语句全部撤销

事务的四大特征:  ACID

  • 原子性(Atomicity):事务中所有操作是不可再分割的原子单位。事务中所有操作要么全部执行成功,要么全部执行失败。
  • 一致性(Consistency):事务执行后,数据库状态与其它业务规则保持一致。如转账业务,无论事务执行成功与否,参与转账的两个账号余额之和应该是不变的。
  • 隔离性(Isolation):隔离性是指在并发操作中,不同事务之间应该隔离开来,使每个并发中的事务不会相互干扰
  • 持久性(Durability):一旦事务提交成功,事务中所有的数据操作都必须被持久化到数据库中,即使提交事务后,数据库马上崩溃,在数据库重启时,也必须能保证通过某种机制恢复数据。

 

posted @ 2020-04-21 18:17  64Byte  阅读(118)  评论(0编辑  收藏  举报