故如虹,知恩;故如月,知明
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
欢迎加群交流技术

Oracle事务的简单使用

4442人阅读 2018/12/28 17:27 总访问:3936163 评论:0 收藏:0 手机
分类: Oracle


事务:

  事务是一个整体,这些操作要么全部执行成功,要么全部不执行。

使用事务的原因:保证数据的安全有效。

事务的四个特点:(ACID)

  1、原子性(Atomic):事务中所有数据的修改,要么全部执行,要么全部不执行。

  2、一致性(Consistence):事务完成时,要使所有所有的数据都保持一致的状态,换言之:通过事务进行的所有数据修改,必须在所有相关的表中得到反映。

  3、隔离性(Isolation):事务应该在另一个事务对数据的修改前或者修改后进行访问。

  4、持久性(Durability):保证事务对数据库的修改是持久有效的,即使发生系统故障,也不应该丢失。


事务提交

  commit

事务回滚

  rollback

oracle数据库是默认开启了事务的,如果你不小心删除或者更新错了数据可以直接调用rollback回滚从而恢复数据。


oracle保存点

  保存点类似游戏的存档,可以回滚到存档的位置
  

存档:savapoint 保存点名称

回滚:rollbakc to 保存点名称



使用事务+函数实现转账的第一步:

  先用受影响的行数做一下两条sql是否都执行成功的判断

create or replace function fun_trans(e1 nvarchar2,e2 nvarchar2 ,money int)
return nvarchar2
as
prowcount int:=0;--申明一个存放受影响行数的临时变量
begin
      --把转出账户减去需要转账的金额
      update scott.emp set sal = sal-money where ename = e1;
      prowcount := prowcount+sql%rowcount;
      --把钱添加到收入的账户
      update scott.emp set sal = sal+money where ename = e2; 
      prowcount := prowcount+sql%rowcount;    
      
      if prowcount <2 then
         begin
            rollback;
            return '转账失败';
         end;
      else
         begin
            commit;
            return '转账成功';
         end;
      end if;
end;









欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739

评价