《SQL必知必会》| 第20课 管理事务处理 学习笔记

  • 这一课介绍了事务是必须完整执行的SQL语句块。
  • 我们学习了如何使用COMMITROLLBACK语句对何时写数据、何时撤销进行明确的管理;
  • 还学习了如何使用保留点,更好地控制回退操作。

20.1 事务处理

使用事务处理(transaction processing),通过确保成批的SQL操作要么完全执行,要么完全不执行,来维护数据库的完整性。
如果没有错误发生,整组语句提交给(写到)数据库表;
如果发生错误,则进行回退(撤销),将数据库恢复到某个已知且安全的状态。


  • 事务transaction指一组SQl语句;
  • 回退rollback指撤销指定SQL语句的过程;
  • 提交commit指将未存储的SQL语句结果写入数据库表;
  • 保留点savepoint指事务处理中设置的临时占位符placeholder,可以对它发布回退。
提示:可以回退哪些语句?
  • 事务处理用来管理INSERTUPDATEDELETE语句。
  • 不能回退SELECT语句,也不能回退CREATEDROP操作。
  • 事务处理中可以使用这些语句,但进行回退时,这些操作也不撤销。

20.2 控制事务处理

管理事务的关键在于将SQL语句组分解为逻辑块,并明确规定数据何时应该回退,何时不应该回退。

有的DBMS要求明确标识事务处理块的开始和结束。

  • BEGIN TRANSACTIONCOMMIT TRANSACTION语句之间的SQL必须完全执行或者完全不执行。
  • COMMIT用于保存更改
  • ROLLBACK用于撤销。
20.2.1 使用ROLLBACK

SQLROLLBACK命令用来回退(撤销)SQL语句。

20.2.2 使用COMMIT
  • 一般的SQL语句都是针对数据库直接执行和编写的,这就是所谓的隐式提交(implicit commit),即提交(写或保存)操作是自动进行的。
  • 在事务处理块中,提交不会隐式进行。不过,不同DBMS的做法有所不同。有的DBMS按隐式提交处理事务端,有的则不这样。
    进行明确的提交,使用COMMIT语句。
20.2.3 使用保留点
  • 要支持回退部分事务,必须在事务处理块中的合适位置放置占位符。这样,如果需要回退,可以回退到某个占位符。在SQL中,这些占位符称为保留点

MariaDBMySQLOracle中创建占位符,可使用SAVEPOINT语句。
每个保留点都要取能够标识它的唯一名字,以便在回退时,DBMS知道回退到何处。

提示:保留点越多越好

保留点越多,你就越能灵活地进行回退。

发布了149 篇原创文章 · 获赞 26 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_34170700/article/details/104355506