锁 分为 read 和 write 。下面是 两种 锁的区别
--------------------------------------------------------------------
//如 将 table1 设为read锁, table2 设为write锁, table3 设为read锁
lock tables [table1] read,[table2] write,[table3] read;
----------------------------------------------------------------------
//执行到这里时,进入封闭空间。
1. table1 仅允许[当前线程、其他线程]读,[其他线程]写(更新)要等待[释放锁],
[当前线程]写(更新)会引发mysql报错
2. table2 仅允许[当前线程]读写,[其他线程]读写要等待[释放锁]
3. table3 仅允许[当前线程、其他线程]读,[其他线程]写(更新)要等待[释放锁],
[当前线程]写(更新)会引发mysql报错
----------------------------------------------------------------------
//解锁
UNLOCK TABLES;
----------------------------------------------------------------------
当前线程关闭时,自动释放所有表锁,无论有没有执行 unlock tables
参考:
(1)MySQL 常用语法之锁表与解锁表
(2)MySQL中lock tables与unlock tables(锁表/解锁)使用总结