码迷,mamicode.com
首页 > 数据库 > 详细

数据库事务

时间:2018-12-06 20:37:22      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:令行   自动提交   span   demo   回滚事务   mit   dmi   dstat   pat   

Transaction

  • 指的是一组操作,里面包含许多单一的逻辑
  • 只要有一个逻辑没执行成功,都算失败,都会回滚
  • 用于确保逻辑执行成功

命令行操作事务

注:

cmd如果提示:‘mysql‘不是内部或外部命令,也不是可运行的程序或批处理文件

需要配置环境变量path

如果忘记Mysql目录,可以使用show variables like "basedir";查询

开启事务

 start transaction;

提交或者回滚事务

commit:提交事务, 数据将会写到磁盘上的数据库

rollback:数据回滚,回到最初的状态

关闭自动提交

show variables like ‘%commit%‘;

set autocommit=off;

技术分享图片

命令行演示事务过程:

技术分享图片

代码方式操作事务

代码里面的事务,主要是针对连接来操作的

  1. 通过conn.setAutoCommit(false )来关闭自动提交的设置

  2. 提交事务 conn.commit();

  3. 回滚事务 conn.rollback();

 1 public class TestDemo {
 2     @Test
 3     public void test() {
 4         try {
 5             Connection conn = DBUtils.getConn();
 6             //关闭自动提交
 7             conn.setAutoCommit(false);
 8             String sql = "update person set name = ? where id = ?";
 9             PreparedStatement ps = conn.prepareStatement(sql);
10             ps.setString(1, "admin");
11             ps.setInt(2, 3);
12             
13             int result = ps.executeUpdate();
14             System.out.println(result);
15             if(result>0) {
16                 conn.commit();
17             }else {
18                 conn.rollback();
19             }
20         } catch (SQLException e) {
21             e.printStackTrace();
22         }
23     }
24 }

事务的特性

  1.  原子性
    • 事务中包含的逻辑不可分割  
  2. 一致性
    • 事务执行前后的数据完整性  
  3. 隔离性
    • 事务在执行期间不受其他事务影响  
  4. 持久性
    • 事务执行成功后,数据应该持久保存在磁盘上  

 

数据库事务

标签:令行   自动提交   span   demo   回滚事务   mit   dmi   dstat   pat   

原文地址:https://www.cnblogs.com/qf123/p/10078035.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!