MySql——事务控制语言(DTL)
什么是事务(控制台只能是内存的操作)
通常,在此之前,我们说,一条语句使用一个分号(;)来结束,并得到执行。
那么我们说,这个“一次性执行”的过程,可以称为“一个事务”。
简单来说,“一条sql语句,就是一个事务”。
则:
数据库(自然包括mysql数据库)中的事务,是指,可以将“多条语句”的执行,当作“一条语句”来看到的一种内部机制。
即:“事务”是一种可以保证“多条语句一次性执行完成”或“一条都不执行”的机制。
为什么需要事务?
看一个实际应用需求(银行存款):表名cunkuan
|
id |
账户名 |
存款 |
|
1 |
test1 |
1000 |
|
2 |
test2 |
5000 |
|
3 |
test3 |
3000 |
现在,test1突然需要一笔钱,买iPhone8,向test2借钱4000。
银行转账:
第一步: update cunkuan set 存款=存款-4000 where id=2;
第一步做完,突然断电了!
第二步: update cunkuan set 存款=存款+4000 where id=1;
则如果没有事务,就可能发生这种事情(惨案)。
如果有了事务,则就可以避免该事情。
事务可以看作是一个“容器”,将多条语句,放入该容器,最后,只要一个命令行,来决定其中的所有语句是否“执行”。
事务的特点
原子性:一个事务中的所有语句,应该做到:要么全做,要么一个都不做;
一致性:让数据保持逻辑上的“合理性”,比如:一个商品出库时,既要让商品库中的该商品数量减1,又要让对应用户的购物车中的该商品加1;
隔离性:如果多个事务同时并发执行,但每个事务就像各自独立执行一样。
持久性:一个事务执行成功,则对数据来说应该是一个明确的硬盘数据更改(而不仅仅是内存中的变化)。
事务模式:
事务模式:就是让每条执行语句是否当作“一个事务”来看到的设定项。
mysql默认安装好之后,其事务模式是:一条语句当作一个事务。
比如:
原来数据:
执行插入:
结果:
我们可以将其修改为:事务需要“认可”模式:
set autocommit = 0; //false,关闭该模式,即此时不再是一条语句一个事务了。
//结果是:必须使用commit语句才能够生效。

然后插入:
s刷新:
可见,没有变化。
然后再执行commit:
再刷新;
注意:autocommit的设置值,只是影响通常情况下都每条语句的默认行为(自动提交还是等着commit提交)
不管autocommit的值是什么(1,0),我们也仍然可以使用事务的完整流程模式来实现事务,如下:
事务的基本实现流程:
1,声明事务开始:start transaction;
2, 设定多条要执行的具体语句,比如:insert, update, delete, select。。。其实就是执行,只是这些执行的语句,并不“生效”——其只是内存状态下的执行,而不是物理状态的执行。
3,判断是否需要执行该些语句:
if( 判断是否有错误){
//执行——才针对执行了物理性改变——即生效。
commit;
}
eslse{
//回滚——不执行任何语句。
rollback;
}
判断是否有错误通常分这两种环境:
1,如果是cmd中,直接观察是否出错。
2,如果是php程序中,那就需要使用 mysql_error()函数来判断是否有错。
下来来使用事务完整转账这件事情(假设为cmd模式):
start transaction;
#第一步:
update cunkuan set 存款=存款-4000 where id=2;
#第一步做完,突然断电了?
#第二步:
update cunkuan set 存款=存款+4000 where id=1;
则如果这两条语句都没有错误,就可以:
commit;
但,如果其中发生了错误,则可以:
rollback;

MySql——事务控制语言(DTL)的更多相关文章
- mysql事务控制语言TCL
Transaction Control Language 事务控制语言 事务:一个或一组sql语句组成一个执行单元,这个执行单元作为不可分割的整体执行.如果某个语句执行错误,整个单元回滚到最初的状态. ...
- 事务控制语言DTL
一.什么是事务? · 数据库中的事务,是指可以将“多条相关语句执行”看做是“一条语句执行”的一种内部机制.即事务是一种可以保证“多条语句一次性执行完成”或者一条语句都不执行的机制. 三.事务的特点 原 ...
- 一、TCL事务控制语言 二、MySQL中的约束 三、多表查询(重点) 四、用户的创建和授权 五、MySQL中的索引
一.TCL事务控制语言###<1>事务的概念 事务是访问并可能更新数据库中各种数据项的执行单元. 事务是一条SQL语句,一组SQL语句,或者整个程序. 事务是恢复和并发控制的基本单位. 事 ...
- <MySQL>入门四 事务控制语言 TCL
-- TCL /* Transcation Control Language 事务控制语言 事务:一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行 案例:转账 name ...
- MySQL数据库笔记三:数据查询语言(DQL)与事务控制语言(TCL)
五.数据查询语言(DQL) (重中之重) 完整语法格式: select 表达式1|字段,.... [from 表名 where 条件] [group by 列名] [having 条件] [order ...
- mysql 事物控制语言
事务控制语言(DTL) 什么是事务 通常,在此之前,我们说,一条语句使用一个分号(;)来结束,并得到执行. 那么我们说,这个“一次性执行”的过程,可以称为“一个事务” ...
- MySQL事务提交过程(一)
MySQL作为一种关系型数据库,已被广泛应用到互联网中的诸多项目中.今天我们来讨论下事务的提交过程. MySQL体系结构 由于mysql插件式存储架构,导致开启binlog后,事务提交实质是二阶段提交 ...
- MySQL入门详解(二)---mysql事务、锁、以及优化
MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在一个商城系统中,用户执行购买操作,那么用户订单中应该加一条,库存要减一条,如果这两步由于意外只进行了其中一步那么就会发生很大的问题.而事 ...
- MySQL事务提交过程
一.MySQL事务提交过程(一) MySQL作为一种关系型数据库,已被广泛应用到互联网中的诸多项目中.今天我们来讨论下事务的提交过程. 由于mysql插件式存储架构,导致开启binlog后,事务提交实 ...
随机推荐
- ThinkPHP 连接数据库
今天在配置连接Mysql 时出现了bool(false)的提示,仔细修改了mysql的密码,还是不对,发现问题应该数据库本身设置了前缀tb_本身的拼写错误和注释掉了 'DB_PREFIX'=>' ...
- python编程(最简单的rpc代码)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 采用twisted可以编写最简单的rpc代码. server端代码如下, from twiste ...
- 依存可视化︱Dependency Viewer——南京大学自然语言处理研究组
来源网页:http://nlp.nju.edu.cn/tanggc/tools/DependencyViewer.html 视频演示网页:http://nlp.nju.edu.cn/tanggc/to ...
- D3.js 使用心得
教程 D3.js 入门教程系列 http://www.ourd3js.com/wordpress/296/ 全球地图数据
- [转载][QT][SQL]sq]学习记录1_模糊搜索
转载自:sql学习网站: http://www.w3school.com.cn/sql/index.asp 用于模糊搜索数据库的数据 语句:http://www.w3school.com.cn/sql ...
- linux自学(七)之开始ccentos学习,安装jdk
上一篇:linux自学(六)之开始centos学习,更换yum源 如果你认真跟着前面操作那么一定都完成相关配置及下载,我们的目的是部署Javaweb项目,需要jdk,mysql,tomcat.那么接下 ...
- Java并发--并发容器之ConcurrentHashMap
下面这部分内容转载自: http://www.haogongju.net/art/2350374 JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能.因为 ...
- bzoj 2002 Bounce 弹飞绵羊
bzoj 2002 Bounce 弹飞绵羊 设一个虚拟节点表示被弹飞,则每个点的后继点是唯一确定的,每个点向它的后继点连边,就形成了一颗树. 询问就是问某个节点到虚拟节点的路径长度,修改就删除原来向后 ...
- BZOJ4152 AMPPZ2014 The Captain 【最短路】【贪心】*
BZOJ4152 AMPPZ2014 The Captain Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点 ...
- BZOJ2753 SCOI2012 滑雪与时间胶囊 【最小生成树】*
BZOJ2753 SCOI2012 滑雪与时间胶囊 Description a180285非常喜欢滑雪.他来到一座雪山,这里分布着M条供滑行的轨道和N个轨道之间的交点(同时也是景点),而且每个景点都有 ...