内容来自实验楼:MySQL 基础课程
- 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}
默认情况下,MySQL采用
autocommit
模式运行。这意味着,当您执行一个用于更新(修改)表的语句之后,MySQL立刻把更新存储到磁盘中。
如果您正在使用一个事务安全型的存储引擎(如InnoDB
,BDB
或NDB
簇),则您可以使用以下语句禁用autocommit
模式:
SET AUTOCOMMIT=0;
如果您想要对于一个单一系列的语句禁用autocommit
模式,则您可以使用START TRANSACTION
语句:START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summary=@A WHERE type=1; COMMIT;
使用
START TRANSACTION
,autocommit
仍然被禁用,直到您使用COMMIT
或ROLLBACK
结束事务为止。然后autocommit
模式恢复到原来的状态。 -
SAVEPOINT和ROLLBACK TO SAVEPOINT语法:
SAVEPOINT identifier ROLLBACK [WORK] TO SAVEPOINT identifier RELEASE SAVEPOINT identifier
SAVEPOINT
语句用于用标识符名称设置命名一个事务保存点。 -
LOCK TABLES和UNLOCK TABLES语法:
LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE} [, tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}] ...
表锁定只用于防止其它客户端进行不正当地读取和写入。保持锁定(即使是读取锁定)的客户端可以进行表层级的操作,比如
DROP TABLE
。