zoukankan      html  css  js  c++  java
  • MySQL悲观锁

    //0.开始事务
    begin;/begin work;/start transaction; (三者选一就可以)
    
    //1.查询出商品信息
    select status from table where id=1 for update;
    
    //2.根据商品信息生成订单
    insert into table111 (id,goods_id) values (null,1);
    
    //3.修改商品status为2
    update table set status=2 where id=1;
    
    //4.提交事务
    commit;/commit work; (任选一种释放锁)

    总结:

      1. 实现悲观锁利用select ... for update加锁, 操作完成后使用commit来释放锁

      2. innodb引擎时, 默认行级锁, 当有明确字段时会锁一行, 如无查询条件或条件

          字段不明确时, 会锁整个表. 条件为范围时会锁整个表

      3. 查不到数据时, 则不会锁表

  • 相关阅读:
    lighting
    移动端
    SVN常见问题
    前四章知识点小结
    如何不运用第三方变量实现两个数的交换
    awk
    sort
    cut
    sed
    30道Linux面试题
  • 原文地址:https://www.cnblogs.com/zeussbook/p/11881173.html
Copyright © 2011-2022 走看看