mysql数据库事务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()

























以上是关于mysql数据库事务的主要内容,如果未能解决你的问题,请参考以下文章

数据库基本操作--------MySQL事务

3.MySQL事务

mysql事务

mysql的事务四个特性以及事务的四个隔离级别

MySQL专题2: 事务和锁

MySQL 事务