事务的概念课件_第1页
事务的概念课件_第2页
事务的概念课件_第3页
事务的概念课件_第4页
事务的概念课件_第5页
已阅读5页,还剩13页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

事务的概念事务的概念在现实生活中,人们通过银行互相转账和汇款,从数据的角度来看,这实际上就是数据库中两个不同账户之间的数据操作。例如,用户A向用户B转账了1000元,则A账户的余额减去1000元,B账户的余额加上1000元,整个过程需要使用两条SQL语句来完成操作,若其中一条语句出现异常没有被执行,则会导致两个账户的金额不同步,从而使数据出现错误。为了避免上述情况的发生,MySQL中可以通过开启事务来进行数据操作。事务的概念事务实际上指的是数据库中的一个操作序列,由一组DML语句(INSERT、DELETE、UPDATE)组成。这些语句不可分割,只有在所有的SQL语句都执行成功后,整个事务引发的操作才会更新到数据库中,如果有至少一条语句执行失败,所有操作都会被取消。以用户转账为例,将需要执行的语句定义为事务,具体的转账流程如图所示。事务的概念用户转账过程中,只有事务执行成功后数据才会变更,如果事务执行失败,数据库中的值将不会变更。事务的创建和回滚在默认设置下,MySQL中的事务为自动提交模式,每一条语句都处于一个单独的事务中,在这条语句执行完毕后,如果执行成功则隐式提交事务,如果执行失败则隐式回滚事务。正常的事务管理是一组相关的操作处于一个事务之中,因此在执行正常的事务时,可以使用相关指令关闭数据库的自动提交模式,随后用户将一直处于某个事务中,直到用户执行一条COMMIT(提交)或者ROLLBACK(回滚)命令后才会结束当前事务。

如果用户不想关闭事务的自动提交模式,可以使用BEGIN或者STARTTRANSACTION命令开启事务,事务开启后便可以执行相关的事务语句,事务提交后自动回到自动提交模式。另外,事务的回滚操作只能撤销所有未提交的修改,对已经提交的事务不能使用ROLLBACK命令进行回滚。事务的创建和回滚接下来将通过具体案例演示转账汇款的事务操作。创建一个账户表account,表结构如表所示:事务的创建和回滚根据表中提供的参数创建account表,并向其中插入测试数据,具体的SQL语句如下所示:事务的创建和回滚从上方代码的执行结果可以看出,测试数据插入成功。接下来使用SELECT命令查看账户表account事务的创建和回滚账户表account中存在A、B和C三个账户,每个账户的存款金额都为1000。接下来,使用SHOWVARIABLES语句查看MySQL是否为事务自动提交模式,具体的SQL语句如下所示:从上方代码的执行结果可看出,MySQL自动提交模式处于开启状态。因为此处事务需要手动提交,所以要关闭自动提交模式事务的创建和回滚setautocommit=0中的0代表OFF状态(反之1代表ON状态)。再次通过SHOWVARIABLES语句查看自动提交模式是否关闭从执行结果可看出,MySQL的自动提交模式已关闭。下面将通过具体的实例演示事务的操作过程事务的创建和回滚通过事务,实现账户A转账给账户B100元钱的操作事务的创建和回滚从以上执行结果可看出,通过事务操作实现了转账。需要注意,如果在执行转账操作过程中数据库出现故障,为了保证事务的同步性,则事务不会提交。接下来通过具体实例演示这种情况以上执行结果证明汇款成功并执行了更新操作,A账户的余额减少了100元,B账户的余额增加了100元,此时可查看表中数据进行验证事务的创建和回滚从以上执行结果可看出,账户A的余额减少了100元。使用SELECT命令查看表中数据,验证数据是否被修改。通过事务操作,实现账户A转账给账户C100元钱,在账户A的数据操作完成后,关闭数据库客户端,以此来模拟数据库死机,并查看数据是否被修改事务的创建和回滚从以上执行结果可看出,账户A的余额从900元变为了800元,账户A的转账操作完成。此时关闭MySQL的客户端,并重新进入,再次查看account表中的数据事务的创建和回滚从执行结果可以看出,重新登录数据库后,account表中账户A的余额又恢复为900元,原因如下:在进行事务操作时,未在最后提交事务,转账操作并没有全部完成,为了保证事务的同步性,系统对数据操作进行了回退用户可以利用这种隐式的方式实现未提交事务的数据的回滚上文中也提到,在实际的事务操作中,如果发现某些操作是不合理的,就可以通过ROLLBACK命令回滚未提交的事务,这种方式并不需要退出数据库接下来通过具体实例演示使用ROLLBACK进行事务的回滚事务的创建和回滚通过事务操作,实现账户B转账给账户C100元,在转账操作完成后,使用ROLLBACK语句进行转账回滚操作。事务的创建和回滚可以看出,账户C的余额增加了100元。因为还未提交事务,此时使用ROLLBACK命令将事务操作进行回滚从上方代码的执行结果可以看出,账户B和账

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论