数据库事务
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;
命令行演示事务过程:
代码方式操作事务
代码里面的事务,主要是针对连接来操作的
-
通过conn.setAutoCommit(false )来关闭自动提交的设置
-
提交事务 conn.commit();
-
回滚事务 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 }
事务的特性
- 原子性
- 事务中包含的逻辑不可分割
- 一致性
- 事务执行前后的数据完整性
- 隔离性
- 事务在执行期间不受其他事务影响
- 持久性
- 事务执行成功后,数据应该持久保存在磁盘上
以上是关于数据库事务的主要内容,如果未能解决你的问题,请参考以下文章