MySQL必知必会 学习笔记 第二十六章 管理事务处理

浅浅的花香味﹌ 2022-12-30 13:52 174阅读 0赞

并非所有引擎都支持事务处理。MyISAM不支持,InnoDB支持。

事务处理可用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行。如果没有错误发生,整组语句写到数据库表,如果发生错误,将已经执行的部分语句进行回退,以恢复数据库到某个已知且安全的状态。

术语:
1.事务:一组SQL语句。
2.回退:撤销指定SQL语句。
3.提交:将未存储的SQL语句结果写入数据库表。
4.保留点:指事务处理中设置的临时占位符,可以回退到该点。

标识事务的开始:

  1. START TRANSACTION;

回退MySQL语句:

  1. SELECT语句; -- 查看结果集
  2. START TRANSACTION;
  3. DELETE语句;
  4. SELECT语句; -- 会发现指定行被删除
  5. ROLLBACK; -- 回退删除语句
  6. SELECT语句; -- 删除行又回来了

ROLLBACK只能在一个事务处理内使用。

可以ROLLBACK的语句有INSERT、UPDATE、DELETE。在事务处理块中可以使用CREATE和DROP语句,但执行回退时它们不会被撤销。

一般MySQL语句是直接隐含提交的,在事务处理中,需要显式提交:

  1. START TRANSACTION;
  2. DELETE语句1;
  3. DELETE语句2;
  4. COMMIT;

以上当DELETE语句2失败时,整个事务会被撤销。

COMMIT或ROLLBACK后,事务会自动关闭。

有些事务如果发生了错误,不需要全部回退,可在事务处理块中某一位置放置占位符,如果需要回退,可以回退到某个占位符。

创建占位符:

  1. SAVEPOINT savePointName;

每个保留点都有标识它的唯一的占位符名字,回退到某个保留点:

  1. ROLLBACK TO savePointName

可设置任意多的保留点。

保留点在事务处理完成后自动释放,MySQL 5及以后版本可以用RELEASE SAVEPOINT显式释放保留点。

将MySQL默认的自动提交改为手动提交:

  1. SET autocommit = 0;

aotucommit标志针对每个连接而非服务器。

发表评论

表情:
评论列表 (有 0 条评论,174人围观)

还没有评论,来说两句吧...

相关阅读