事务问题

事务问题

当前没有事务的意思是, 没有设置手动开启事务吧, 则就是默认自动提交事务, 每次触发新删改的操作就会提交, 那么如果程序内部出现问题,则无法保证数据库的一致性 。

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

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

3回答
rock221 提问者 2021-05-22 18:00:25

默认的不是自动提交事务吗? 自动提交事务不是非事务吗? 有点晕

  • 同学你好,1、首先从事务这个概念开始,事务最开始的概念,它把一系列的操作统一为一个整体,这一系列的操作要么同时成功,要么同时失败。

        ​一个事务基本的操作是这样子的:

        ​开始事务

        ​如果发生了错误,进行回滚

        ​如果没有发生错误,则提交事务

        ​2、自动提交事务是事务的一种提交形式,它也是一种事务。而非事务,是不以事务的方式提交,也就是说一系列操作并不是一个整体,会各自执行自己的sql。

    例如之前的例子,执行以下三条语句

    SQL1,SQL2,SQL3
    执行三条语句是1、2成功了,3失败了
    如果是事务方式:则1、2的执行结果会被撤销,即三条语句都不成功
    如果是非事务方式:则1、2执行成功,3失败

    所以非事务也是可以正常修改数据的。

    祝学习愉快!

    2021-05-23 16:49:45
  • 提问者 rock221 回复 好帮手慕小班 #2

    我最初问的就是 。。。 非事务 是不是自动提交事务,也就是数据库默认的。。。 我理解没错呀。 

    2021-05-23 16:53:54
  • 好帮手慕小班 回复 提问者 rock221 #3

    同学你好,非事务不是自动提交事务。这是两个不同的概念。

    祝学习愉快!

    2021-05-23 17:29:45
好帮手慕阿园 2021-05-22 17:54:56

同学你好

1、是的,同学的理解是正确的

2、1)并不是哦,设置事务传播类型为NOT_SUPPORTED的方法,在执行时,不论当前是否存在事务,都会以非事务的方式运行,也就是没有事务;如果是自动提交事务也是存在事务的,这里是非事务

2)如果是非事务的情况下新增,如果执行多条SQL语句,彼此没有关系

例如,执行以下三条语句

SQL1,SQL2,SQL3
执行三条语句是1、2成功了,3失败了
如果是事务方式:则1、2的执行结果会被撤销,即三条语句都不成功
如果是非事务方式:则1、2执行成功,3失败

3)是的,同学的理解是正确的

祝学习愉快~


  • 提问者 rock221 #1
    默认的不是自动提交事务吗? 自动提交事务不是非事务吗? 有点晕,是不具备修改数据的能力吗
    2021-05-23 14:29:45
rock221 提问者 2021-05-22 16:24:01

追问下:

NOT_SUPPORTED: 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起: 如果当前存在事务是指手动事务吧? 挂起之后,默认的还是自动事务吧 , 如果是新增的执行,用这个仍然可以对数据库进行新增数据的吧。 如果设置了ready-only=true ,则代表只能读取数据, 无法写入吧。 

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星

相似问题

登录后可查看更多问答,登录/注册

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

在线咨询

领取优惠

免费试听

领取大纲

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