首页 > 数据库 >15.Oracle事物

15.Oracle事物

时间:2022-12-15 17:37:29浏览次数:44  
标签:SC201801001 回滚 15 -- 事物 oracle address Oracle

简介
oracle事物主要用于保持oracle数据库的数据一致性,oracle事物可以看成一个SQL块的整体,只要某一个SQL语句错误,那么事物中的SQL被看做一个整体,一起回滚,要么就是一起成功全部提交。
转账案例
我们经常举例银行转账的例子来解析事物,银行转账可以分为三步数据库操作:

1、A账户给B账户转钱500,A账户上金额减少500。

2、B账户上金额增加500。

3、向转账记录表中插入一条A向B转账500块的记录。

oracle事物的基本语法有:
1、set transaction :设置事物属性。

2、commit:提交事物。

3、rollback:回滚事物。

4、savepoint:设置保存点。

5、rollback to savepoint :回滚到保存点。

事物的类型

1、显式事物:顾名思义就是开发者主动控制事物的提交和回滚,可以利用命令来控制事物的提交,如:常见的PL/SQL语句块就是这种类型的事物。必须利用commit提交。

2、隐式事物:指的是oracle数据库自己控制事物的提交和回滚。比如oracle的DDL语句(create、drop、alter等)、DCL语句(grant、revoke)等都是一经执行直接持久化到数据库,不需要开发者自己手动提交。或者是DML语句在oracle数据库设置了自动提交:set autocommit on,也可以不需要主动提交就可以直接持久化到数据库。

案例

declare
address varchar2(100);
begin
  --取出学生SC201801001的地址
  select t.stuaddress
    into address from stuinfo t
   where t.stuid = 'SC201801001';
  dbms_output.put_line(address);
  --1.修改学生SC201801001的地址为001号
  update stuinfo t
     set t.stuaddress = '福建省厦门市001号'
   where t.stuid = 'SC201801001';
  --再次取出
  select t.stuaddress
    into address from stuinfo t
   where t.stuid = 'SC201801001';
  dbms_output.put_line(address);
  --设置保存点1
  savepoint f1;
  --2.修改学生SC201801001的地址为002号
  update stuinfo t
     set t.stuaddress = '福建省厦门市002号'
   where t.stuid = 'SC201801001';
  --再次取出
  select t.stuaddress
    into address from stuinfo t
   where t.stuid = 'SC201801001';
  dbms_output.put_line(address);
  --回滚到保存点
  rollback to f1;
  commit;
end;

代码解析:
1、修改学生“SC201801001”地址为"001号",并保存一个savepoint(保存点)f1。

2、继续修改学生的地址为“002号”,打印出学生的地址,这个时候回滚到保存点f1,再提交,这个时候学生的地址应该是“001号”.

总结

oracle事物是oracle数据一致性的基础,oracle事物具有原子性、一致性、分离性、持久性的特点。分别指的是:

1、原子性:oracle事物是oracle数据库逻辑控制当中的逻辑单位,它对数据的操作要么是全部执行成功、要么全部不成功。

2、一致性:指的是事物执行的前后的数据库的数据必须保持一致状态。只有事物完成后,事物中修改的数据,才能被其他用户读。

3、隔离性:事物之间具有并发性,之间不互相干扰。

4、持久性:指的是事物中的数据一经提交,就持久化到数据库,即使后面的操作错误被打断,也不会回滚到之前的状态。

标签:SC201801001,回滚,15,--,事物,oracle,address,Oracle
From: https://www.cnblogs.com/mxx520/p/16985614.html

相关文章