07 MySQL_事务
2022/5/4 19:14:23
本文主要是介绍07 MySQL_事务,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
事务
-
事务( transaction) 是数据库中执行同一业务多条SQL语句 工作单元,事务可以保证多条SQL语句全部执行成功或全部执行失败
-
和事务相关的SQL语句:
-
验证事务:
1. 创建表: create table user (id int primary key auto_increment,name varchar(10),money int,state varchar(10)); 2. 插入数据 insert into user values (null,'李雷',5000,'正常'),(null,'韩梅梅',50,'正常'),(null,'Lucy',10,'冻结'); 3. 李雷给Lucy转账; update user set money=4000 where id=1 and state='正常'; update user set money=1005 where id=3 and state='正常';
-
以上代码无事务保护,则导致数据库内部的数据李雷丢了1000块钱
-
以下操作有事务保护的步骤;
-
开启事务;
begin;
-
让李雷-1000;
update user set money=3000 where id=1 and state='正常';
-
让Lucy+1000;
update user set money=1010 where id=3 and state='正常';
-
因为一条成功一条失败 所以不能把内存中的改变提交到磁盘中,所以需要执行回滚指令
rollback;
-
-
转账成功执行流程;
-
开启事务;
begin;
-
让李雷-1000;
update user set money=3000 where id=1 and state='正常';
-
让韩梅梅+1000;
update user set money=1010 where id=2 and state='正常';
-
由于转账业务的多条SQL语句全部执行成功 所以可以执行提交指令
把内存的改动提交到磁盘中
commit;
-
-
-
和事务相关的SQL语句;
- begin: 开启事务
- rollback: 回滚事务 把内存的改动清除
- commit: 提交事务 把内存的改动一次性提交到磁盘中
-
第二种开启事务的方式
- 数据库中事务默认是自动提交的
1. 查看数据自动提交的状态 show variables like '%autocommit'; 2. 修改自动提交的状态==0关闭 1开启== set autocommit=0; 3. 修改李雷钱为50000; update user set money=50000 where id=1; - savepoint: 保存回滚点; set autocommit=1; 500 begin; update user set money=10000 where id=1; savepoint s1; update user set monry=20000 where id=2; savepoint s2; update user set money=30000 where id=3; rollback to s1;
-
总结事务相关指令;
- begin 开启事务
- rollback 回滚事务
- commit 提交事务
- 查看自动提交状态 show variables like '%autocommit%';
- 设置自动提交状态 set autocommit=0/1;
- 保存回滚点 savepoint s1;
- 回滚到回滚点 rollback to s1;
这篇关于07 MySQL_事务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-02MySQL 3主集群搭建
- 2024-12-25如何部署MySQL集群资料:新手入门教程
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解