事务控制语言

什么叫做“事务”:

想象一个场景:

小明给小花 汇款 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中事务相关推荐

  1. mysql用一条sql语句删除重复记录_mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句...

    正好想写一条删除重复语句并保留一条数据的SQL,网上查了一部分资料写的很详细,但还是在这里写下自己的理解,以遍后续学习 .如下: 表字段和数据: SQL语句: DELETE FROM`user`WHE ...

  2. mysql 语句怎样修饰约束_MySQL中的约束,添加约束,删除约束,以及一些其他修饰讲解...

    (1)创建数据库 CREATE DATABASES 数据库名; (2)选择数据库 USE 数据库名; (3)删除数据库 DROP DATAVBASE 数据库名; (4)创建表 CREATE TABLE ...

  3. 一条mysql语句查询出男女的人数

    统计报表中,为了实现一条mysql语句查询出男女的人数,sql语句如下: #年末年龄统计表 select COUNT(case when info.sex = 'm' then sex end ) a ...

  4. 写出一条Sql语句,取出表A中的第31条到第40条记录。表A以自动增长的ID作为主键。(注意:ID可能不是连续的)

    写出一条Sql语句,取出表A中的第31条到第40条记录.表A以自动增长的ID作为主键.(注意:ID可能不是连续的).笔试的时候经常会出现这道题,网上的答案也是龙鱼混杂,今天自己实践了一下,找出了正确的 ...

  5. 一条mysql语句是事务吗_没想到!我在简历上写了“精通MySQL”,阿里面试官跟我死磕后就给我发了高薪offer...

    事情是这样的 前段时间面试了阿里,大家也都清楚,如果你在简历上面写着你精通XX技术,那面试官就会跟你死磕到底. 我就是在自己的简历上写了精通MySQL,然后就开启了和阿里面试官的死磕之路,结果就是拿到 ...

  6. mysql语句中事务可靠性_MYSQL中的事务

    我们来看一下住户退房这个业务需要做什么事情? 要更新该用户的离开时间.总金额 需要更新用户所住的房屋的状态为空闲 由此可见,以上需要两个SQL来实现. 发现问题:若某一个SQL语句执行出错的情况下,另 ...

  7. mysql语句统计总数_一条sql语句实现统计查询_MySQL

    bitsCN.com 一条sql语句实现统计查询 如图:程序员在进行如下的统计时,现在提供两种实现方案: 方案一:运用 SEKECT CASE WHEN EXPLAIN SELECT count(*) ...

  8. mysql查询数量语句_mysql语句统计总数_一条sql语句实现统计查询_MySQL

    bitsCN.com 一条sql语句实现统计查询 如图:程序员在进行如下的统计时,现在提供两种实现方案: 方案一:运用 SEKECT CASE WHEN EXPLAIN SELECT count(*) ...

  9. mysql隔离级别加锁情况_MySQL数据库事务各隔离级别加锁情况--read committed amp;amp; MVCC...

    上节回顾 上篇记录了我对MySQL 事务 隔离级别read uncommitted的理解. 这篇记录我对 MySQL 事务隔离级别 read committed & MVCC 的理解. 前言 ...

最新文章

  1. LIS(最大上升子序列)
  2. 文巾解题 9 回文数
  3. oc58--Category注意事项
  4. Maximum Subsequence Sum最大子列和问题(c语言实现)
  5. Nacos(三)之架构
  6. gojs 部分功能实现
  7. MsSql 生成数据文档
  8. linux中的管道和重定向
  9. 在矩池云上复现 CVPR 2018 LearningToCompare_FSL 环境
  10. Python函数相关
  11. Windows 10 IoT Core 17115 for Insider 版本更新
  12. Java版小米商城项目简介
  13. wireshark 安装失败报错,缺少kb2999226补丁的解决方案
  14. 理解Alpha-Beta 剪枝算法
  15. ubuntu键盘突然失灵怎么办?
  16. QQ空间抢车位刷钱方法汇总
  17. android 图片缩放工具,批量图片缩放软件下载-批量图片缩放 安卓版v1.3.1-PC6安卓网...
  18. 2020暑期牛客多校训练营第九场(C)Groundhog and Gaming Time(数学期望,线段树,逆元)
  19. 知识付费小程序源码可开流量主
  20. PTA 1088三人行

热门文章

  1. CNCC2018中国计算机大会:人工智能与信息安全分论坛
  2. 使用反应式领域驱动设计来解决不确定性
  3. 左值、右值、右值引用、移动、引用坍缩和完美转发
  4. 钻石型继承模型的内存分布
  5. python中怎么取出数字上的每一位数_Python提取任意长度整数的每位数字
  6. 视频转换——Video to Video Converter
  7. 前端使用html2canvas生成图片
  8. [JSP笔记]用JS实现简单的进度条
  9. 18秋计算机应用基础在线作业3,计算机应用基础18秋在线作业3【满分答案】(13页)-原创力文档...
  10. 【ACWing】708. 偶数