`

MySQL 事务处理

阅读更多

MySQL  事务处理

 

 MySQL  事务

  • 在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务
  • 事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行
  • 事务用来管理insert,update,delete语句

关于事务的术语:

  • 事务(transaction):指一组SQL语句
  • 回滚(rollback):指撤销指定SQL语句的过程
  • 提交(commit):指将未存储的SQL语句结果写入到数据库中
  • 保留点(savepoint):指事务处理中设置的临时占位符,可以对它进行回滚。

事务处理的关键在于将SQL语句组分解为逻辑块,并明确规定数据何时应该回滚,何时应该提交。

回滚事务

start transaction;/*开始事务*/
delete from t_tableA where id=1;
rollback;/*事务回滚*/



提交事务

start transaction;
delete from t_tableA where id=1;
commit;/*提交事务*/



保留点

start transaction;
delete from t_tableA where id=4;
savepoint s1;/*声明一个保留点*/
delete from t_tableA where id=5;
rollback to s1;/*回滚到s1保留点*/



事务的四个特征(ACID属性)

  1. 原子性(Atomic):组成事务的处理语句组成了一个逻辑单元,这是最小的逻辑单元。
  2. 一致性(Consistent):在事务处理之前和之后,数据是一致的。
  3. 隔离性(Isolated):一个事务的处理对另一个事务的处理没有影响。
  4. 持续性(Durable):当事务处理成功后,其结果在数据库中被永久记录下来。


JDBC中使用事务

Class.forName("com.mysql.jdbc.Driver");        
Connection conn = DriverManager.getConnection("jdbc:mysql:///db", "root", "root");

conn.setAutoCommit(false);//取消自动提交

PreparedStatement stat = null;
try {
    String sql = "INSERT INTO t_user(`name`) VALUES('xyz1')";
    String sql2 = "INSERT INTO t_user(`name`) VALUES('xyz2')";
    
    stat = conn.prepareStatement(sql);
    stat.executeUpdate();
    
    Savepoint sp1 = conn.setSavepoint();
    
    stat = conn.prepareStatement(sql2);
    stat.executeUpdate();
    
    conn.rollback(sp1);//回滚到保留点,即跳过了sql2语句
    conn.commit();
} catch (Exception e) {
    e.printStackTrace();
    conn.rollback();//出现异常,SQL不执行
} finally {
    stat.close();
    conn.close();
}

 

分享到:
评论

相关推荐

    PHP事务处理实例 mysql事务处理的意义

    mysql事务处理的意义 事务处理机制在程序开发过程中有着非常重要的作用,它可以使整个系统更加安全,例如在银行处理转账业务时,如果A账户中的金额刚被发出,而B账户还没来得及接收就发生停电,这会给银行和个人带来...

    nodejs + mysql 事务处理问题

    nodejs + mysql 事物处理问题 呵呵 看了就知道 记得npm install啊 需要的东西啊 本想免费 苦于没积分 ,需要的的同学,给点分吧

    mySQL事务处理

    关于mysql的事务处理 public static void StartTransaction(Connection con, String[] sqls) throws Exception { if (sqls == null) { return; } Statement sm = null; try { // 事务开始 System....

    mysql事务处理用法与实例详解

    mysql事务处理用法与实例详解

    Java实现的mysql事务处理操作示例

    主要介绍了Java实现的mysql事务处理操作,结合实例形式较为详细的分析了Java基于JDBC操作mysql数据库实现事务处理的相关概念、操作技巧与注意事项,需要的朋友可以参考下

    mysql 事务处理学习资料+示例说明

    mysql 事务处理学习资料,带有示例说明

    MySQL事务处理与并发访问.pdf

    MySQL事务处理与并发访问.pdf

    mysql事务处理[归类].pdf

    mysql事务处理[归类].pdf

    MySQL事务处理详细讲解及完整实例

    MySQL事务处理详细讲解及完整实例下载 ..

    php实现mysql事务处理的方法

    本文实例讲述了php实现mysql事务处理的方法。分享给大家供大家参考。具体分析如下: 要实现本功能的条件是环境 mysql 5.2 /php 5 支持事务的table 类型,需要InnoDB,有了这些条件你就可以做上面的实现了,这个事物回滚...

    Mysql事务处理详解

    一、Mysql事务概念  MySQL 事务主要用于处理操作量大,复杂度高的数据。由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行。在 MySQL 中只有使用了 Innodb 数据库引擎的...

    php下pdo的mysql事务处理用法实例

    本文实例讲述了php下pdo的mysql事务处理用法。分享给大家供大家参考。具体分析如下: php+mysql事务处理的几个步骤: 1.关闭自动提交 2.开启事务处理 3.有异常就自动抛出异常提示再回滚 4.开启自动提交 注意:mysql...

    mysql事务处理用法与实例代码详解

    主要介绍了mysql事务处理用法与实例代码详解,详细的介绍了事物的特性和用法并实现php和mysql事务处理例子,非常具有实用价值,需要的朋友可以参考下

    MySql事务处理.pdf

    。。。

    MySql事务处理.docx

    ...

    PHP+MySQL高并发加锁事务处理问题解决方法

    主要介绍了PHP+MySQL高并发加锁事务处理问题解决方法,结合实例形式分析了PHP+MySQL事务处理相关操作技巧与注意事项,需要的朋友可以参考下

    MySQL事务处理与应用简析

    事务处理在各种管理系统中都有着广泛的应用,比如人员管理系统,很多同步数据库操作大都需要用到事务处理。这篇文章主要介绍了MySQL事务处理,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics