网站大量收购独家精品文档,联系QQ:2885784924

事务的概念课件.pptx

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

事务的概念

事务的概念在现实生活中,人们通过银行互相转账和汇款,从数据的角度来看,这实际上就是数据库中两个不同账户之间的数据操作。例如,用户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命令回滚未提交的事务,这种方式并不需要退出数据库接下来通过具体实

文档评论(0)

一笑倾洁 + 关注
实名认证
内容提供者

PPT课件

1亿VIP精品文档

相关文档