mysql数据库事务处理_mysql数据库事务

数据库事务?

逻辑工作单元:将系统中连续的变化放在一个逻辑单元里,可以全部执行,可可以全部不执行。

事务的回滚:

数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,

要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,

否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功

要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,

必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。

事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。

数据库为啥要开启事务?

1.如果为true那么就是自动提交。自动提交不用你挂念最后要提交的问题,

它会自动完成,并且每条语句被当成一个事务;

手动提交,在你显示提交之前的所有语句都被认为是一个事务,

它的好处是,当这个事务中的某一条语句失败时,事务会回滚,

也就是都不会写到数据库,这有利于于保持数据库的一致性。

2.默认的情况为自动提交事务,也就是说,每一条对数据库的更新的sql语句

代表一项事务,操作成功

后,系统自动调用commit()来提交,否则就是调用rollback()来撤销事务

使用JDBC事务界定时,可以将多个SQL语句结合到一个事务中,JDBC事务的一个

缺点是事务的范围局限在一个数据库连接,一个JDBC事务不能跨越多个数据库。

1、JDBC事务--------java.sql.Connection(JDBC接口)提供了两种事务模式,自动提交和手动提交,

/*自动提交:在做记录更新时,系统会自动提交,不能保持事务的一致性,也就不能保证数据完整。

手动提交:它则把事务处理将由你来完成,在发生异常时,可以进行事务回滚,保持事务的一致。

下面讨论下在实践中的应用区别:

1、在JDBC中,如果Connection类的方法setAutoCommit(boolean autoCommit)赋给值为false,那么就可以手动提交(调用Connection类的commit()方法);

2、如果为true那么就是自动提交。自动提交不用你挂念最后要提交的问题,他会自动完成,并且每条语句被当成一个事务;

3、手动提交,在你显示提交之前的所有语句都被认为是一个事务,它的好处是,当这个事务中的某一条语句失败时,事务会回滚,也就是都不会写到数据库,这有利于于保持数据库的一致性。

比如当你在主表和从表同时插入相关的数据时,如果从表(或主表)失败,而主表(或从表)成功时,那么,数据也不会被写入主表(或从表)中。

*/

// java.sqk.Connection提供了下面了下面几种控制事务的方法

public void setAutoCommit(boolean)

public boolean getAutoCommit()

public void commit()

public void rollback()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值