MyISAM和MEMORY存储引擎的表 表级锁定
BDB存储引擎的表 页级锁定
InnoDB的存储引擎的表 行级锁定
默认情况下,表锁和行锁是自动获取,不需要额外的命令。但有的情况下,用户需要明确地进行锁表或进行事务控制,以便确保整个事务的完整性,因而需要事务控制和锁定语句。
1、 lock table 和unlock table
lock table锁定当前线程的表。如果表被其它线程锁定,则当前线程会等待,直到获取锁定的表。
Unlock table 释放当前线程获得的任务锁定。当前线程执行另一个lock table时,或连接关闭时,当前线程锁定的表被隐含地解锁。
语法:
LOCK TABLES
table_name [as alias] {Read [Local] | [Low_Priortiy] Write}
[,table_name [as alias] {Read [Local] | [Low_Priortiy] Write} ]…
UNLOCK TABLES
Session1 | Session2 |
LOCK TABLE file_text read; |
|
Select film_id,tiem from file_text where film _id=1001; | Select film_id,tiem from file_text where film _id=1001; |
| Update file_txt set title=”Test” where film_id=101; 等待 |
UNLOCK TABLES; | 获得锁,更新操作完成; Update file_txt set title=”Test” where film_id=101; |
2、 事务控制
通过SET AUTOCOMMIT、START TRANSACTION、COMMIT和ROLLBACK等语句支持本地事务,具体语法如下:
START TRANSACTION |BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET AUTOCOMMIT ={0|1}
默认自动提交,