一条mysql语句是事务吗_mysql中事务
事务控制语言
什么叫做“事务”:
想象一个场景:
小明给小花 汇款 5000元 买IPHONE,操作界面不用管,不管什么操作界面,最终都要落实到这样两条语句的执行:
update 存款表set money = money - 5000 where账户=’小明’;
update 存款表set money = money + 5000 where账户=’小花’;
当,第一条语句执行成功,突然断电了(或任何其他情况),就会造成数据的“不一致”。
要解决这个问题,就是“事务”的功能:
事务就是用来保证多条“增删改”语句的执行的“一致性”:要么都执行完成,要么都没有执行;
事务的特点:
原子性:一个事务中的所有语句,应该做到:要么全做,要么一个都不做;
一致性:让数据保持逻辑上的“合理性”,比如:一个商品出库时,既要让商品库中的该商品数量减1,又要让对应用户的购物车中的该商品加1;
隔离性:如果多个事务同时并发执行,但每个事务就像各自独立执行一样。
持久性:一个事务执行成功,则对数据来说应该是一个明确的硬盘数据更改(而不仅仅是内存中的变化)。
事务模式:
事务模式是指:
在我们的cmd命令行模式中,是否开启了“一条语句就是一个事务”的这个开关:
默认情况下(安装后),这个模式是开启的,称为“自动提交模式”;
set autocommit = 1;
这样之后,每条增删改语句,都会立即生效;
我们可以把它关闭,那就是“人为提交模式”——即需要人为提交;
set autocommit = 0;
这样之后,所有增删改语句,都必须使用commit之后,才能生效;
首先,我们以前的经验都是:一条增删改语句,一旦回车,执行就完成(前提是不出错);
现在,我们关闭该模式:
然后,再去执行一条简单的insert语句:
对比:
执行前:
然后,执行insert:
但是,再查看结果,即insert执行之后,数据并没有出现:
然后,再去“人为提交”:
然后,再核查数据,就有了:
事务执行的基本流程
1,开启一个事务:
start transaction; //也可以写成:begin;
2,执行多条增删改语句; //也就是相当于希望这多条语句要作为一个“不可分割”的整体去执行的任务
3,判断这些语句执行的结果情况,并进行提交或回滚:
if( 没有出错 ){
commit; //提交事务;此时就是一次性完成;
}
else{
rollback; //回滚事务;此时就是全部撤销;
}
具体分2种情况来做:
在cmd中,就是凭“肉眼”观察是否有错:
没有错误的情况:
有错误的情况:
在php中:
一条mysql语句是事务吗_mysql中事务相关推荐
- mysql用一条sql语句删除重复记录_mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句...
正好想写一条删除重复语句并保留一条数据的SQL,网上查了一部分资料写的很详细,但还是在这里写下自己的理解,以遍后续学习 .如下: 表字段和数据: SQL语句: DELETE FROM`user`WHE ...
- mysql 语句怎样修饰约束_MySQL中的约束,添加约束,删除约束,以及一些其他修饰讲解...
(1)创建数据库 CREATE DATABASES 数据库名; (2)选择数据库 USE 数据库名; (3)删除数据库 DROP DATAVBASE 数据库名; (4)创建表 CREATE TABLE ...
- 一条mysql语句查询出男女的人数
统计报表中,为了实现一条mysql语句查询出男女的人数,sql语句如下: #年末年龄统计表 select COUNT(case when info.sex = 'm' then sex end ) a ...
- 写出一条Sql语句,取出表A中的第31条到第40条记录。表A以自动增长的ID作为主键。(注意:ID可能不是连续的)
写出一条Sql语句,取出表A中的第31条到第40条记录.表A以自动增长的ID作为主键.(注意:ID可能不是连续的).笔试的时候经常会出现这道题,网上的答案也是龙鱼混杂,今天自己实践了一下,找出了正确的 ...
- 一条mysql语句是事务吗_没想到!我在简历上写了“精通MySQL”,阿里面试官跟我死磕后就给我发了高薪offer...
事情是这样的 前段时间面试了阿里,大家也都清楚,如果你在简历上面写着你精通XX技术,那面试官就会跟你死磕到底. 我就是在自己的简历上写了精通MySQL,然后就开启了和阿里面试官的死磕之路,结果就是拿到 ...
- mysql语句中事务可靠性_MYSQL中的事务
我们来看一下住户退房这个业务需要做什么事情? 要更新该用户的离开时间.总金额 需要更新用户所住的房屋的状态为空闲 由此可见,以上需要两个SQL来实现. 发现问题:若某一个SQL语句执行出错的情况下,另 ...
- mysql语句统计总数_一条sql语句实现统计查询_MySQL
bitsCN.com 一条sql语句实现统计查询 如图:程序员在进行如下的统计时,现在提供两种实现方案: 方案一:运用 SEKECT CASE WHEN EXPLAIN SELECT count(*) ...
- mysql查询数量语句_mysql语句统计总数_一条sql语句实现统计查询_MySQL
bitsCN.com 一条sql语句实现统计查询 如图:程序员在进行如下的统计时,现在提供两种实现方案: 方案一:运用 SEKECT CASE WHEN EXPLAIN SELECT count(*) ...
- mysql隔离级别加锁情况_MySQL数据库事务各隔离级别加锁情况--read committed amp;amp; MVCC...
上节回顾 上篇记录了我对MySQL 事务 隔离级别read uncommitted的理解. 这篇记录我对 MySQL 事务隔离级别 read committed & MVCC 的理解. 前言 ...
最新文章
- LIS(最大上升子序列)
- 文巾解题 9 回文数
- oc58--Category注意事项
- Maximum Subsequence Sum最大子列和问题(c语言实现)
- Nacos(三)之架构
- gojs 部分功能实现
- MsSql 生成数据文档
- linux中的管道和重定向
- 在矩池云上复现 CVPR 2018 LearningToCompare_FSL 环境
- Python函数相关
- Windows 10 IoT Core 17115 for Insider 版本更新
- Java版小米商城项目简介
- wireshark 安装失败报错,缺少kb2999226补丁的解决方案
- 理解Alpha-Beta 剪枝算法
- ubuntu键盘突然失灵怎么办?
- QQ空间抢车位刷钱方法汇总
- android 图片缩放工具,批量图片缩放软件下载-批量图片缩放 安卓版v1.3.1-PC6安卓网...
- 2020暑期牛客多校训练营第九场(C)Groundhog and Gaming Time(数学期望,线段树,逆元)
- 知识付费小程序源码可开流量主
- PTA 1088三人行
热门文章
- CNCC2018中国计算机大会:人工智能与信息安全分论坛
- 使用反应式领域驱动设计来解决不确定性
- 左值、右值、右值引用、移动、引用坍缩和完美转发
- 钻石型继承模型的内存分布
- python中怎么取出数字上的每一位数_Python提取任意长度整数的每位数字
- 视频转换——Video to Video Converter
- 前端使用html2canvas生成图片
- [JSP笔记]用JS实现简单的进度条
- 18秋计算机应用基础在线作业3,计算机应用基础18秋在线作业3【满分答案】(13页)-原创力文档...
- 【ACWing】708. 偶数