SQL中表锁定(LOCK、UNLOCK)的具体使用


当前第2页 返回上一页

然后,从tbl 表中检索数据:

SELECT * FROM tbl; 

接下来,在tbl表中插入一个新行:

INSERT INTO tbl(col) VALUES(20); 

来自第二个会话的插入操作处于等待状态,因为第一个会话READ已经在tbl表上获取了锁,但尚未释放。

可以从SHOW PROCESSLIST查看详细信息。

SHOW PROCESSLIST; 

之后,返回第一个会话并使用UNLOCK TABLES语句释放锁定。READ从第一个会话释放锁定后,INSERT执行第二个会话中的操作。

unlock tables; 

最后,检查tbl表的数据,看看INSERT第二个会话的操作是否真的执行了。

SELECT * FROM tbl; 

写锁

WRITE 锁具有以下特点:

  • 保存表锁的唯一会话可以从表中读取和写入数据。
  • 在WRITE锁定释放之前,其他会话无法从表中读取数据并将数据写入表中。

首先,WRITE从第一个会话中获取锁定。

LOCK TABLE tbl WRITE; 

然后,在tbl表中插入一个新行

INSERT INTO tbl(col) VALUES(11); 

有用。

接下来,从tbl表中读取数据。

SELECT * FROM tbl; 

它也有效。

之后,从第二个会话开始,尝试写入和读取数据:

INSERT INTO tbl(col) VALUES(21);
 
SELECT * FROM tbl; 

最后,从第一个会话中释放锁定。

UNLOCK TABLES; 

看到第二个会话中的所有待处理操作都已执行,下图说明了结果:

读锁与写锁 读锁是“共享”锁,它可以防止正在获取写锁,但不能锁定其他读锁。写锁是“独占”锁,可以防止任何其他类型的锁。

到此这篇关于SQL中表锁定(LOCK、UNLOCK)的具体使用的文章就介绍到这了,更多相关SQL 表锁定内容请搜索

更多SQL内容来自木庄网络博客


标签:SQL

返回前面的内容

相关阅读 >>

mysql空间数据存储及函数

常用的sql数据库有哪些

mysql 常用数据库语句 小练习

c#的sql操作类实例

sqlbool盲注和时间盲注详解

52条sql语句教你性能优化

mysql与php的基础与应用专题之数据查询语句

navicat如何导出sql sever脚本文件

sql修改语句怎么写

sql递归查询实现跟帖盖楼效果

更多相关阅读请进入《sql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...