排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
分类:
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
评价