mysql 表锁——读锁和写锁
注意,
0、表的索引类型必须是InnoDB.相关链接:http://www.cnblogs.com/CyLee/p/5579672.html
1、如果你使用Navicat Premium,有可能会出现程序bug无法解锁。但在正常环境下是没问题的
2、存储过程里不允许使用锁
3、phpmyadmin是每次刷新都会重新链接一次,所以也不适合测试多会话(SESSION)
4、互联网时代不太可能使用到表锁,通常是使用行锁,除非erp系统之类的内部系统
读锁:所有的会话只能进行SELECT语句查询
LOCK TABLE [TABLE_NAME] READ
SELECT * FROM TABLE_NAME;
INSERT INTO TABLE_NAME () VALUES (); #一直等待,直到解锁或者超时
写锁:只有当前会话能增删改查,其他会话无法任何操作
LOCK TABLE [TABLE_NAME] WRITE
解锁:
UNLOCK TABLES #常规解锁 LOCO TABLE [TABLE_NAME] READ #再一次锁上,会解除上一次被拦截的对象。然后继续拦截 LOCO TABLE [TABLE_NAME] WRITE #再一次锁上,会解除上一次被拦截的对象。然后继续拦截