我的一些疑问

我的一些疑问

http://img1.sycdn.imooc.com//climg/5e844fd608f0891210710598.jpg

第7行代码:commit

第8行代码:rollback

1、当我执行1-6行代码后准备执行第7行代码,电脑没电了关机,mysql是怎么操作的,是帮我保留操作的还是直接回滚。

2、我修改全公司员工的工资+100元时候执行了第7行,执行到一半,有些员工工资加了,有些员工工资没加。我电脑关机了,在开机运行mysql,之前的操作MySQL是怎么处理的,我一半员工工资加了,一半没加,我还想继续执行是在执行第7行代码还是。

3、老师,如果我不手动开启事务机制,就想前面的练习一样,直接写sql语句,然后执行,让自动开启事务机制。他们是不是就直接更改原数据表。就会像第2个问题一样,语句执行一半电脑关机了,有些员工加了工资有些没有

4、第8行代码在哪些场景要用到。我不能执行完前面代码然后觉得有些代码条件写错了在执行第8行代码回滚吧。那如果是自动事务机制怎么办

5、老师在视屏中讲,.....执行一半电脑关机,在开启mysql服务就可以继续执行。能仔细说下吗

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕笑蓉 2020-04-01 17:34:55

同学,你好。

  1. 第七行commit没有执行,电脑没电了关机,那之前执行的代码都没有被写入到数据库,数据是没有更改的。

  2. 第7行,执行到一半,只要没有执行完,之前执行的代码都没有被写入到数据库,数据是没有更改的。

  3. 开启事务机制后,只要没有执行commit,数据是不会更改的。

  4. rollback可用于前面执行出现异常,commit没有执行完成,触发回滚,数据是不会更改的。

  5. 执行一半电脑关机,在开启mysql服务,可以重新运行记录了修改操作的日志文件,即便有些数据修改了,有些没修改,重新执行修改操作后,数据又可保持正确的修改了。

如果解决了你的疑惑,请采纳,祝学习愉快~


  • 提问者 玖__ #1
    老师,也就是说只要没有运行commit和只要commit没有运行完数据是不会修改的。老师你说的重新运行记录了修改操作的日志文件。日志文件是哪个,是我新建的查询文件里面的sql语句吗,那个redo日志不是mysql内置文件吗,怎么看
    2020-04-01 17:51:01
  • 好帮手慕笑蓉 回复 提问者 玖__ #2
    同学,你好。同学的理解是正确的。关于重新运行日志文件是主要指的是redo,如果发生宕机,则读取磁盘上的redo日志file进行数据的恢复。 祝学习愉快~
    2020-04-01 19:26:10
  • 提问者 玖__ 回复 好帮手慕笑蓉 #3
    老师,你说的日志文件就是查询文件里的sql语句吗。那我运行了新建的查询文件里面的sql语句,运行到一半关机了,开机后我再次运行,是从头运行还是从没运行的地方在开始运行。如果从头运行,它会不会重复运行,就是关机前操作过了,这次又操作过了
    2020-04-02 09:23:11
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师