数据库编程
锁定与解锁
课程目标
了解 —— 锁定和解锁的概念;
掌握 —— 锁定和解锁的设置;
锁定与解锁
MySQL提供了LOCK TABLES语句来锁定当前线程的表,语法格式如下:
LOCK TABLES
tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}
说明:
表锁定支持以下类型的锁定。
READ:读锁定,确保用户可以读取表,但是不能修改表。
WRITE:写锁定,只有锁定该表的用户可以修改表,其他用户无法访问该表。加上LOW_PRIORITY后允许其他用户读取表,但是不能修改它。
在对一个事务表使用表锁定的时候需要注意以下几点:
事务隔离级别
在锁定表时会隐式地提交所有事务,在开始一个事务时,如START TRANSACTION,会隐式解开所有表锁定。
在事务表中,系统变量AUTOCOMMIT值必须设为0。否则,MySQL会在调用 LOCK TABLES之后立刻释放表锁定,并且很容易形成死锁。
事务隔离级别
【例】 在XS表上设置一个只读锁定。
LOCK TABLES XS READ;
说明:LOCK TABLE