数据库事务

Posted qf123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库事务相关的知识,希望对你有一定的参考价值。

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. 持久性
    • 事务执行成功后,数据应该持久保存在磁盘上  

 

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

如何绕过将数据模型传递给片段参数以避免事务太大异常?

回栈事务后如何持久化分片数据?

片段事务分离和附加后ListView不工作?

理解片段事务期间片段的生命周期方法调用

提交带有全屏片段的片段事务

使用 OnItemClickListener 列出视图片段到片段事务