剑轩

Oracle事务的简单使用

电脑版发表于:2018/12/28 17:27


事务:

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

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

事务的四个特点:(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;









关于TNBLOG
TNBLOG,技术分享。技术交流:群号677373950
ICP备案 :渝ICP备18016597号-1
App store Android
精彩评论
{{item.replyName}}
{{item.content}}
{{item.time}}
{{subpj.replyName}}
@{{subpj.beReplyName}}{{subpj.content}}
{{subpj.time}}
猜你喜欢