zoukankan      html  css  js  c++  java
  • Mysql-for update手工锁定sql

    for update 前言

    for update都会对查询到的当前结果集进行加锁

    当select语句中使用了for update,如果当前select发现自己的结果集中有一条或者多条数据正在被修改(如有其他的语句提前for update了等),那么再执行此语句就会一直等待。

    for update 定义

    for update是一种行级锁,又叫排它锁,一旦用户对某个行施加了行级加锁,则该用户可以查询也可以更新被加锁的数据行,其它用户只能查询但不能更新被加锁的数据行.如果其它用户想更新该表中的数据行,则也必须对该表施加行级锁.即使多个用户对一个表均使用了共享更新,但也不允许两个事务同时对一个表进行更新,真正对表进行更新时,是以独占方式锁表,一直到提交或复原该事务为止。行锁永远是独占方式锁。

    只有当出现如下之一的条件,才会释放共享更新锁:
    1、执行提交(COMMIT)语句
    2、退出数据库(LOG OFF)
    3、程序停止运行

    for update 使用

    SELECT * FROM user WHERE id=3 FOR UPDATE;
    
    SELECT * FROM user WHERE id=3 and name='Tom' FOR UPDATE;
  • 相关阅读:
    C#细说多线程(下)
    C#细说多线程(上)
    C#:进程、线程、应用程序域(AppDomain)与上下文分析
    C#委托与事件
    SQL Server 查询优化器运行方式
    SQL优化之索引分析
    C#反射机制
    Sql注入
    JAVA内存泄漏解决办法
    spring4声明式事务—02 xml配置方式
  • 原文地址:https://www.cnblogs.com/shuzf/p/15357617.html
Copyright © 2011-2022 走看看