MYSQL学习笔记:关于MySQL管理事务处理(6)


MySQL学习:


MySQL事务

事务处理用来维护数据库的完整性,用来管理成批执行的MySQL操作。


介绍几个术语

  • 事务(transaction)

指一组SQL语句。

  • 回退(rollback)

指撤销指定SQL语句的过程。

  • 提交(commit)

指将末存储的SQL语句结果写入数据库表。

  • 保留点(savepoint)

指事务处理中设置的临时占位符,你可以对它发布回退(与回退整个事务处理不同)。



使用MySQL事务

  • 标志事务的开始

使用START TRANSACTION语句来标志开始。

START TRANSACTION;
  • 回退(撤销)MySQL语句

使用 ROLLBACK 命令来回退MySQL语句。

注意:

  • ROLLBACK只能在一个事务处理内使用(在执行一条START TRANSACTION命令之后)。
  • 事务处理用来管理INSERTUPDATEDELETE语句,不能回退SELECT(没意义)、CREATEDROP(用了也没效果)。
-- 说明表中有数据
SELECT * FROM students; 
	
-- 标示事务的开始
START TRANSACTION;

-- 删除表中的数据
DELETE FROM students;

-- 表示表中数据为空
SELECT * FROM students;
	
-- 撤销上一条语句
ROLLBACK;

-- 表名撤销成功
SELECT * FROM students;
  • 提交事务

一般的MySQL语句都是隐含提交的,即提交(写或保存)操作时自动进行的。
COMMIT 语句仅在不出错时写出更改。
当 COMMIT 或 ROLLBACK 语句执行后,事务会自动关闭,将来的更改会隐含提交。

语句1;
语句2;
COMMIT;
  • 使用保留点

为了支持回退部分事务处理,必须能在事务处理块中合适的位置放保留点。
使用 SAVEPOINT name_p 命令来创建,用 ROLLBACK TO name_p 来回退。

SAVEPOINT name_p1;
...
SAVEPOINT name_p2;

ROLLBACK To name_p1;

注意:

  1. 保留点越多越好
  2. 保留点在事务处理完成(执行一条 ROLLBACKCOMMIT)后自动释放。
  • 更改默认的提交行为

为指示MySQL不自动提交更改,需要使用 SET autocommit=0 语句

SET autocommit = 0;

其中autocommit标志决定是否自动提交更改,设置为0(假)时指示MySQL不自动提交更改,知道设置为真为止



若有不当之处,欢迎指正!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章