oracle事务

回顾什么是事务?

一个不可分割的子操作形成一个整体,该整体要么全部执行成功,要么全部执行失败。例如:转帐


回顾为什么要用事务?

如果不用事务的话,为转帐为例,可能出现一个用户钱增加了,另一个用户钱不变


回顾编程中,事务可用于哪一层?

事务放在业务层


回顾jdbc编程中,如何使用事务?

connection.setAutoCommit(false);

pstmt.executeUpdate();

connection.commit();

connection.rollback();

回顾hibernate编程中,如何使用事务?

transaction.begin();

session.save(new User());

transaction.commit();

transaction.rollback();

回顾spring编程中,如何使用事务?

spring可以分为二种

>编程式事务,藕合

>声明式事务,解藕,提倡


Oracle的事务只针对DML操作,即select/insert/update/delete


回顾MySQL的事务开始:start transaction

Oracle的事务开始:第一条DML操作做为事务开始


Oracle的提交事务

(1)显示提交:commit    

(2)隐藏提交:DDL/DCL/exit(sqlplus工具)

注意:提交是的从事务开始到事务提交中间的内容,提交到ORCL数据库中的DBF二进制文件


Oracle的回滚事务

(1)显示回滚:rollback

(2)隐藏回滚:关闭窗口(sqlplus工具),死机,掉电

注意:回滚到事务开始的地方


回顾什么是回滚点?

在操作之间设置的一个标志位,用于将来回滚之用


回顾为什么要设置回滚点?savepoint a;rollback to savepoint a;

如果没有设置回滚点的话,Oracle必须回滚到事务开始的地方,其间做的一个正确的操作也将撤销


使用savepoint 回滚点,设置回滚点a    

savepoint a;


使用rollback to savepoint,回滚到回滚点a处

rollback to savepoint a;


Oracle提交或回滚后,原来设置的回滚点还有效吗?

原回滚点无效了


Oracle之所以能回滚的原因是?

主要机制是实例池


回顾MySQL支持的四种事务隔离级别及能够解决的问题

(1)read uncommitted -- 不能解决任何缺点

(2)read committed   -- 脏读,Oracle默认

(3)reapatable read  -- 不可重复读,脏读,MySQL默认

(4)serializable     -- 幻读,不可重复读,脏读,效率低


注意:jdbc/dbutils速度快,但书写烦

      mybaits速度中等,但书写"中等"

      hibernate速度慢,但书写"爽"

      

Oracle支持的二种事务隔离级别及能够解决的问题

Oracle支持:read committed 和 serializable


Oracle中设置事务隔离级别为serializable

set transaction isolation level serializable;


演示二个用户同时操作emp表,删除KING这条记录,会有什么后果?

因为有隔离级别的存在,所以不会出现二个用户都删除了KING这条记录,

一定是一个用户删除KING成功,在该用户没有提交的情况下,另一个用户等待

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值