oracle的乐观锁和悲观锁

本文详细介绍了Oracle数据库中的悲观锁和乐观锁。悲观锁在每次访问数据时都会上锁,防止数据被修改,可能导致锁定和死锁问题。而乐观锁在更新时检查数据是否被修改,常见实现包括版本戳和时间戳机制。根据系统并发量和读写比例,可以选择适合的锁策略。
摘要由CSDN通过智能技术生成

一、问题引出

1. 假设当当网上用户下单买了本书,这时数据库中有条订单号为001的订单,其中有个status字段是’有效’,表示该订单是有效的;

2. 后台管理人员查询到这条001的订单,并且看到状态是有效的

3. 用户发现下单的时候下错了,于是撤销订单,假设运行这样一条SQL: update order_table set status = ‘取消’ where order_id = 001

4. 后台管理人员由于在②这步看到状态有效的,这时,虽然用户在③这步已经撤销了订单,可是管理人员并未刷新界面,看到的订单状态还是有效的,于是点击”发货”按钮,将该订单发到物流部门,同时运行类似如下SQL,将订单状态改成已发货:update order_table set status = ‘已发货’ where order_id = 001

<<< 上面的问题应该如何解决呢??? 请见下文分解 >>>

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值