Oracle-第五章-TCL事务控制语言

1 事务

事务:完成一项工作的所有步骤的和
oracle数据库中的事务:
    只要是还未执行提交或回滚
    就可以看做一个事务(该事务未结束)

事务控制语言:控制事务提交或回滚
--commit(提交对数据库的更改) rollback(取消对数据库的更改) savepoint(设置保存点)

1.1 特征

(1)原子性

事务是一个整体的工作单元
要么全部执行 要么全部取消
某一步执行失败 则全部回滚

(2)一致性

当前事务在进行数据修改时
其他事务只能查看修改之前的状态
等到当前事务执行结束(提交后)
数据的修改才能被看到

(3)隔离性

当前事务在进行数据修改时
其他事务只能查看修改之前的状态
等到当前事务执行结束(提交后)
数据的修改才能被看到

(4)持久性

事务提交后
所做的修改就会保存
直到下一次事务来改变它

1.2 隔离级别

(1) Serializable (串行化)
     可避免脏读、不可重复读、幻读的发生

(2) Repeatable read (可重复读)
     可避免脏读、不可重复读的发生

(3) Read committed (读已提交)
     可避免脏读的发生(oracle默认)

(4) Read uncommitted (读未提交)
     低级别,任何情况都无法保证

1.3 隔离级别不同导致的问题

(1)脏读

在一个事务处理过程里读取了另一个未提交的事务中的数据

(2)不可重复读

例如:
    事务T1在读取某一数据
    而事务T2立马修改了这个数据并且提交事务给数据库
    事务T1再次读取该数据就得到了不同的结果
    发生不可重复读
    
解决办法:oracle中可以通过forupdate解决
        select * 
        from emp 
        for update;--锁定【基本没人用】

(3)虚读(幻读)

--幻读是事务非独立执行时发生的一种现象

例如:
    事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作
    这时事务T2又对这个表中插入了一行数据项
    而这个数据项的数值还是为“1”并且提交给数据库
    而操作事务T1的用户如果再查看刚刚修改的数据
    会发现还有一行没有修改,其实这行是从事务T2中添加的
    就好像产生幻觉一样 这就是发生了幻读

--解决办法:锁整个表

2 TCL语句

直接输入运行即可

commit;
--提交

rollback;
--回滚
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猪宝宝哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值