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之TCL事务控制语言(详解)
TCL : Transaction Control Language 事务控制语言 零.MySQL 中的存储引擎 1.概念:在mysql中的数据用各种不同的技术存储在文件(或内存)中. 2.通过sho ...
- mysql 事务 数量_MySQL 数据查询语言(DQL) 事务控制语言(TCL)详解
一. 数据查询语言(DQL)(重中之重) 完整语法格式: select 表达式1|字段,.... [from 表名 where 条件] [group by 列名] [having 条件] [order ...
- 一、TCL事务控制语言 二、MySQL中的约束 三、多表查询(重点) 四、用户的创建和授权 五、MySQL中的索引...
一.TCL事务控制语言 ###<1>事务的概念 事务是访问并可能更新数据库中各种数据项的执行单元. 事务是一条SQL语句,一组SQL语句,或者整个程序. 事务是恢复和并发控制的基本单位. ...
- mysql 事务 注意 优化_MySQL入门详解——事务、锁、优化
MySQL事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在一个商城系统中,用户执行购买操作,那么用户订单中应该加一条,库存要减一条,如果这两步由于意外只进行了其中一步那么就会发生 ...
- mysql 事务 注意 优化_MySQL入门详解(二)---mysql事务、锁、以及优化
MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在一个商城系统中,用户执行购买操作,那么用户订单中应该加一条,库存要减一条,如果这两步由于意外只进行了其中一步那么就会发生很大的问题.而事 ...
- TCL——事务控制语言
一.事务控制语言(TCL)介绍 1.1 事务 事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的.而整个单独单元作为一-个不可分割的整体,如果单元中某条SQL语句一 ...
- MySQL-7 DDL约束 标识列 TCL事务控制语言 视图view
文章目录 DDL语言 常见约束 约束分类 添加约束的时机 创建表时添加约束 通用写法 修改表时添加约束 修改表时删除约束 主键和唯一的对比 外键约束 案例讲解常见约束 标识列 TCL事务控制语言 事务 ...
- MySQL_TCL事务控制语言_刘锋的博客
文章目录 TCL事务控制语言 一.事务的属性(ACIB) 原子性 一致性 隔离性 持久性 二.事务的创建 隐式的事务 显式的事务 三.事务的隔离级别 脏读: 不可重复度: 幻读: 四.delete和t ...
- 辉仔日记之学代码第十八期——Mysql事务
目录 一.事务的概念和特性 1.概念: 2.特性: 二.MySQL存储引擎 三.执行事务的语法和流程 1.事物的创建 2.注意事项 四.事务的隔离级别 1.事务并发问题是如何产生的? 2事务并发问题: ...
最新文章
- AI寒冬论作者:通用人工智能仍是白日梦
- java中String和char的区别
- 微软EPG老大发给员工的mail
- Web开发的那点事--业务层常用功能
- hdu 1848(Fibonacci again and again)(SG博弈)
- 甲流病人初筛(信息学奥赛一本通-T1399)
- spring boot 常用项目文件结构
- shell脚本和linux命令,Linux shell脚本全面学习(一)
- oracle修改用户的登录密码
- 裘宗燕:C/C++ 语言中的表达式求值
- 使用tomcat+eclipse搭建javaweb基础开发环境
- 无任何网络提供程序接受指定的网络路径
- python3-关于GitHub的最基本操作
- 会议审批 查询会议签字
- Vertica中的projections
- ​STM32家族介绍,覆盖STM32F、STM32H、STM32L全系列
- 2020研究生数学建模B题——汽油辛烷值优化——获奖论文思路分享
- 解决Serialized class ** must implement java.io.Serializable问题
- NumPy的矩阵表示方法
- srs可以用java开发吗,为SRS流媒体服务器添加HLS加密功能(附源码)
热门文章
- linux常用命令100个(转)
- python 线程锁_Python多线程-线程锁
- 师范生计算机期末考试题目,2015年深圳宝安区计算机教师招聘考试试题[师范生发布]无答案...
- html5游戏面试题,关于HTML5的十大面试题
- sqlyog怎么查找表_VBA代码解决方案第58讲:在VBA中查找指定工作表的实用方法
- Run-Time Check Failure #2 – Stack around the variable 'a' was corrupted.
- 利用WinSock进行无连接的通信
- 阿里云数据库再添新成员,企业级MariaDB正式开卖!
- 力拼5G,台湾拟释放出更多频谱
- mysql显示行号,通过表名模糊查找,通过列名模糊查找,常用sql