【诺禾】:诺禾MySQL管理实务教程之喷面试官系列

#MYSQL#这是我第12篇MySQL教程,是第二篇喷面试官系列的,其实说起来是教程,也只不过是我总结的一些数据库相关的知识,我作为一个Java后端的开发为什么不去总结Java方面的知识,而是来说数据库方面的,原因我之前也提起过,稍微懂一点数据库SQL编写的知识,活让你有意想不到的便捷。
今天的主要内容是数据库事务的知识,主要介绍上面是事务,以及如何利用COMMIT(回退,撤销)和RALLBACK(回滚)语句来处理事务。
首先了解一下什么是事务处理,MyISAM和InnDB是两种最常用使用的引擎,前者不支持明确的事务管理,而后者支持。这就是数据库推荐使用InnDB而不是推荐使用MyISAM的原因了。
事务处理是可以用来维护数据库的完整性,他是用来保证成批的MySQL操作要么完全执行,要么完全不执行。事务处理也是一种机制,用来管理必须成批地执行MySQL的操作,不保证数据库不包含不完整的操作结果,利用事务处理,可以保证一组操作不会中途停止,他们或者作为整体执行,或者完全不执行,如果在执行的过程中没有错误发生,整租语句提交给数据库表,如果发生错误则进行回退或者撤销。
而事务呢就是指的是一组SQL语句,回退呢就是指撤销指定SQL语句使其不执行。提交呢就是指将未存储的SQL语句写入数据库表的过程。
下面来介绍如何控制事务处理。管理事务处理的关键在于将SQL语句分解成为逻辑块,并明确规定数据何时回退,何时不回退,做到可控制的程度。MySQL使用ROLLBACK命令来回退MySQL语句,比如。
这条SQL语句首先执行了一条DELETE语句删除ordertotals的收益行,另外一条SELECT语句严重ordertotals确实为空,这是用一条ROLLBACK语句回退START TRANSACTION 之后的所有语句,最后一条SELECT语句显示该表不为空。显然ROLLBACK只能在一个事务处理内使用,就是在执行一条START TRANSACTION 之后去使用。而且在事务管理的规则里面,他也只能用来回退增删改操作,不能回退SELECT操作。
COMMIT回退的用法。一般的MySQL语句都是直接针对数据库表执行和编写的,这就是所谓的隐含提交,操作也是自动执行的。但是在事务处理中,提交是不会隐含进行的。为了进行明确的COMMIT语句,如下所示。
在这个例子里面,从系统中完全删除订单编号为20010的订单,因为涉及到了两个表,所以要使用事务来处理保证订单不能被部分删除,最后的COMMIT语句仅在不出错是执行,如果commit之前有错误出现,那么对两个订单表的操作都不会成功。
而在使用commit的时候还有一个需要注意的就是autocommit,他是用来标志决定是否能自动提交更改的,不管有没有COMMIT语句,设置autocommit为0(假)指示MySQL不在自动提交更改知道autocommit被设置为真为止。
其实不管是RALLBACK 还是COMMIT来处理事务,当这些语句被执行之后事务都是会自动关闭的。还有一个更强大的东西就是使用保留点。就不再过多的介绍。
我们的口号是,MySQL从入门到喷面试官。

猜你喜欢

转载自www.cnblogs.com/lovenuohe/p/12943115.html
今日推荐