mysql中使用select for
update的必须针对InnoDb,并且是在一个事务中,才能起作用。
select的条件不一样,采用的是行级锁还是表级锁也不一样。
转http://www.neo.com.tw/archives/900
的说明
由於
InnoDB 預設是 Row-Level Lock,所以只有「明確」的指定主鍵,MySQL 才會執行 Row lock (只鎖住被選取的資料例) ,否則
MySQL 將會執行 Table Lock (將整個資料表單給鎖住)。
舉個例子:
假設有個表單 products ,裡面有 id 跟 name 二個欄位,id 是主鍵。
例1: (明確指定主鍵,並且有此筆資料,row lock)
SELECT * FROM products WHERE id='3' FOR UPDATE;
例2: (明確指定主鍵,若查無此筆資料,無 lock)
SELECT * FROM products WHERE id='-1' FOR UPDATE;
例2: (無主鍵,table lock)
SELECT * FROM products WHERE name='Mouse' FOR UPDATE;
例3: (主鍵不明確,table lock)
SELECT * FROM products WHERE id<>'3' FOR UPDATE;
例4: (主鍵不明確,table lock)
SELECT * FROM products WHERE id LIKE '3' FOR UPDATE;
註1:
FOR UPDATE 僅適用於 InnoDB,且必須在交易區塊(BEGIN/COMMIT)中才能生效。
註2:
要測試鎖定的狀況,可以利用 MySQL 的 Command Mode ,開二個視窗來做測試。
分享到:
相关推荐
主要介绍了MySQL 行锁和表锁的含义及区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
20.MySQL高级锁InnoDB行锁行锁升级为表锁.avi 21.MySQL高级锁InnoDB行锁间隙锁危害.avi 22.MySQL高级锁InnoDB行锁争用情况查看.avi 23.MySQL高级锁InnoDB行锁总结.avi 24.MySQL高级SQL技巧SQL执行顺序及正则表达式....
我们知道mysql的Innodb引擎是支持行锁的,与Oracle不同,mysql的行锁是通过索引加载的,即行锁是加载索引响应的行上的,要是对应的SQL语句没有索引,则会走表锁。 行锁无法实现,取而代之就是表锁。 行锁特点: 1....
59.MySQL高级_索引失效行锁变表锁.avi 58.MySQL高级_行锁演示答疑补充.avi 57.MySQL高级_行锁案例讲解.avi 56.MySQL高级_行锁理论.avi 55.MySQL高级_读锁案例讲解2.avi 54.MySQL高级_读锁案例讲解.avi ...
而需要注意的是 MySQL Connector/Net 6.9.12 的 MySql.Data.dll 是在2018-04-30发布的,官方文档显示支持与 MySQL Server 8.0.3 及之前的版本的MySQL Server连接。 C#通过MySql.Data.dll连接MySql数据库 在项目中...
C#连接MySQL需要的MySql.Data.dll,MySql.Web.dll,MySql.Data.dll,MySql.Web.dll是C#操作MySQL的驱动文件,是C#连接MySQL必要插件。
mysql5.7arm64.zip mysql5.7在麒麟arm64架构下的deb安装包 1.安装deb文件 ...mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; mysql> flush privileges;
mysql可视化客户端安装包和对应破解版
计算机后端-PHP视频教程. php与mysql加强8-select操作.wmv
mysql-5.5.40-win32.msi
EMS.SQL.Manager.2007.for.MySQL.v4.3.3.2.破解方法(需下载我其他资源中的EMS.SQL.Manager.2007.for.MySQL.v4.3.3.2破解文件)
注意: 假如你在给用户'pig'@'%'授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'pig'@'%', 则在使用REVOKE SELECT ON *.* FROM 'pig'@'%';命令并不能撤销该用户对test数据库中user表的SELECT 操作....
Ubuntu Navicat for MySQL 将压缩文件拷贝到ubuntu系统/usr/local/navicat下,解压 tar zxvf navicat112_mysql_cs_x64.tar.gz 进入解压的目录,运行如下命令 ./start_navicat 问题一:中文乱码 解决:打开start_...
· 00.尚硅谷_MySQL高级_源码...尚硅谷_MySQL高级_索引失效行锁变表锁 · 60.尚硅谷_MySQL高级_间隙锁危害 · 61.尚硅谷_MySQL高级_如何锁定一行 · 62.尚硅谷_MySQL高级_行锁总结 · 63.尚硅谷_MySQL高级_主从复制
当数据库损坏时,可以使用该工具,读取data文件夹下的frm文件,并生成数据结构的sql文件。 解压密码:zcgonvh
用于mysql8.0版本的MySql.Data.dll类库,直接引用使用
C#连接mysql、Mysql.data.dll 5.0.8.1、Mysql.data.dll 6.2.1.0 C#连接mysql的dll
Data.Access.Components.for.MySQL.Professional.v7.5.10