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_事务的更多相关文章
- 【WCF--初入江湖】07 分布式事务
07 分布式事务 一.前言 [1]理解事务特性 [2]掌握TransactionFlow 特性 [3]掌握WCF中的事务属性 TransactionAutoCompleteOnSessionClose ...
- MySQL_事务没有提交导致 锁等待 Lock wait timeout exceeded
java.lang.Exception:### Error updating database. Cause: java.sql.SQLException: Lock wait timeout ex ...
- MSSQLServer基础07(事务,存储过程,分页的存储过程,触发器)
事务 事务:保证多个操作全部成功,否则全部失败,这处机制就是事务 思考:下了个订单,但是在保存详细信息时出错了,这样可以成功吗? 数据库中的事务:代码全都成功则提交,如果有某一条语句失败则回滚,整体失 ...
- mysql_事务
事务是针对数据的,不是针对结构的 存储引擎innodb支持事务,myisam不支持事务需求:有一张银行账户表,有A用户给B账户转账,A账户减少,B账户增加,但是A操作之后断电. 解决方案:A减少钱,但 ...
- MySQL_事务(四大特性)
本文转载:https://www.cnblogs.com/kismetv/p/10331633.html 事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段.本文将首 ...
- Mysql_事务_存储过程_触发器
一.什么是事务? 事务(Transaction),一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit).事务通常由高级数据库操纵语言或编程语言( ...
- 【WCF--初入江湖】目录
[WCF--初入江湖]目录 [WCF--初入江湖]01 WCF编程概述 [WCF--初入江湖]02 WCF契约 [WCF--初入江湖]03 配置服务 [WCF--初入江湖]04 WCF通信模式 [WC ...
- sql平时小总结
sql练习:举例子: 1.CREATE TABLE IF NOT EXISTS zz0 (number INT(11)); CREATE TABLE IF NOT EXISTS zz1 (number ...
- java web 开发快速宝典 ------电子书
http://www.educity.cn/jiaocheng/j10259.html 1.2.1 JDk 简介 JDK是Sun公司在1995年推出的一套可以跨操作系统平台编译和运行Java程序的开 ...
随机推荐
- C# 有关List<T>的Contains与Equals方法
[以下内容仅为本人在学习中的所感所想,本人水平有限目前尚处学习阶段,如有错误及不妥之处还请各位大佬指正,请谅解,谢谢!] !!!观前提醒!!! [本文内容可能较为复杂,虽然我已经以较为清晰的方式展 ...
- NLTK基础学习
学习视频来自:Youtube 学习文档来自:简书 NLTK:自然语言工具包 目的:将段落拆分为句子.拆分词语,识别这些词语的词性,高亮主题,帮助机器了解文本关于什么.这个小节将解决意见挖掘或情感分析的 ...
- 一款高速的NET版的离线免费OCR
PaddleOCR.Onnx 一款基于Paddle的OCR,项目使用ONNX模型,速度更快.本项目同时支持X64和X86的CPU上使用.本项目是一个基于PaddleOCR的C++代码修改并封装的.NE ...
- 程序包 applets.user.service.UserService 不存在-2022新项目
一.问题由来 接上一篇文章使用maven进行打包时报中文乱码错误,经过多次尝试后最终解决问题,显示出真正的错误信息如下: 程序包 applets.user.service.UserService 不存 ...
- 使用NE555实现的延时开关电路
NE555 的工作机制 先了解 NE555 的 Trigger(Pin2) 和 Threshold(Pin6) 如何检测电压并控制输出 如果 Trigger(Pin2) 检测到任何低于电源电压1/3的 ...
- 好客租房20-react组件介绍
1react组件介绍 组件是react中的一等公民 组件表示页面中的部分功能 组合多个组件实现完整的页面功能 特点 可复用性 独立 可组合
- python之数据类型的内置方法(str, list)
目录 字符串的内置方法 移除首尾指定字符 字母大小写相关操作 判断字符串的开头或结尾是否是指定字符 字符串特殊的输出方法 拼接字符串 替换指定字符 判断是否是纯数字 查找指定字符对应的索引值 文本位置 ...
- flask实现python方法转换服务
一.flask安装 pip install flask 二.flask简介: flask是一个web框架,可以通过提供的装饰器@server.route()将普通函数转换为服务 flask是一个web ...
- Abp Vnext源码解析系列文章01---EventBus
一.简介 BP vNext 封装了两种事件总线结构,第一种是 ABP vNext 自己实现的本地事件总线,这种事件总线无法跨项目发布和订阅.第二种则是分布式事件总线,ABP vNext 自己封装了一个 ...
- npm错误:Cannot find module ‘compression-webpack-plugin
转自 (82条消息) 前端开发遇到Cannot find module 'compression-webpack-plugin'问题解决_brave_zhao的博客-CSDN博客 <div id ...