数据库的事务处理
来源:互联网 发布:ubuntu下安装jdk8 编辑:程序博客网 时间:2024/05/21 17:43
对于数据表的操作,很明显查询是比更新操作更安全,因为更新操作有可能会出现错误,以导致没有按照既定的要求正确完成操作
但是在很多时候,更新有可能会有多条指令共同完成,例如:银行转账
从A转5000到B的账户:
1.判断A的账户是否有5000
2.判断B账户是否存在且状态是否正常
3.从A账户中扣除5000
4.向B账户中增加5000
5.扣除相应的手续费
以上的5个操作是一个整体,可以理解为一个完整的业务,如果这之中第三点出错了,那么其它操作呢?所有的操作都应该不再执行,并且回归到最原始的状态,而这一操作流程就是事务的操作
所有的事务操作都是针对每一个session进行的,在oracle数据库之中,把每一个连接到数据库上的用户都称为一个session,每一个session之间都彼此独立,不会含有任何的通讯,而每一个session独享自己的事务控制,而事务控制之中主要使用两个命令:
1. 事务的回滚:ROLLBACK,更新操作回到原点
2. 事务的提交:COMMIT,真正的发出更新的操作,一旦提交之后无法回滚
但是这样也会出现问题,例如:某一个session在更新后并没有进行提交事务,这时候其它session是无法进行更新的,必须等待之前的session提交后才可以更新完成
下面示范:
打开两个session ,用户都为scott
user_A:UPDATE myemp SET job='worker' WHERE empno=7369;user_B:UPDATE myemp SET job='singer' WHERE empno=7369;
我们可以发现当user_A进行更新操作时,user_B并不能同时进行更新操作,只有当user_A的更新操作进行COMMIT后,user_B才能够更新:
而此时,雇员编号为’7369’的雇员,job到底是worker还是singer呢?
我们可以清楚地看到,当user_B未commit时,user_A查询到的结果还是worker,并未更新成singer
当我们将user_B的更新操作进行commit之后,user_A查询的结果:
ROLLBACK原理也是一样,当你进行操作后,只要还没有commit就可以ROLLBACK进行事务回滚
但是,如果未提交之前进行回滚,那么操作就会撤销:
- 数据库的事务处理
- Java的数据库事务处理
- 数据库的事务处理
- 数据库的事务处理
- 数据库的事务处理
- 关于数据库的事务处理
- .NET数据库操作的事务处理
- J2EE -- 数据库事务处理的实现
- 数据库服务器的事务处理模式
- 数据库 分布式系统的事务处理
- SQL Server 数据库的事务处理
- 数据库事务处理
- 数据库事务处理
- 数据库事务处理
- 数据库事务处理
- 数据库事务处理
- 数据库事务处理
- Java中数据库事务处理的实现
- 动态规划入门之求字符串距离
- 在cocos界面中添加android的view
- PCB制板工艺介绍之镀金、镀锡等
- 【Android】【代码混淆】ProGuard
- “程序员”和“码农”究竟有什么区别?
- 数据库的事务处理
- 图片框(ImageView)
- 使用adb过程中遇到的问题
- uitextfield设置占位符颜色
- Android中的IPC方式
- 扩欧应用
- 新建maven项目pom.xml报错解决办法
- Machine learning_安装_dlib
- iOS 健康 获取运动步数 距离 时间