什么是事务(控制台只能是内存的操作)

通常,在此之前,我们说,一条语句使用一个分号(;)来结束,并得到执行。

那么我们说,这个“一次性执行”的过程,可以称为“一个事务”。

简单来说,“一条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)的更多相关文章

  1. mysql事务控制语言TCL

    Transaction Control Language 事务控制语言 事务:一个或一组sql语句组成一个执行单元,这个执行单元作为不可分割的整体执行.如果某个语句执行错误,整个单元回滚到最初的状态. ...

  2. 事务控制语言DTL

    一.什么是事务? · 数据库中的事务,是指可以将“多条相关语句执行”看做是“一条语句执行”的一种内部机制.即事务是一种可以保证“多条语句一次性执行完成”或者一条语句都不执行的机制. 三.事务的特点 原 ...

  3. 一、TCL事务控制语言 二、MySQL中的约束 三、多表查询(重点) 四、用户的创建和授权 五、MySQL中的索引

    一.TCL事务控制语言###<1>事务的概念 事务是访问并可能更新数据库中各种数据项的执行单元. 事务是一条SQL语句,一组SQL语句,或者整个程序. 事务是恢复和并发控制的基本单位. 事 ...

  4. <MySQL>入门四 事务控制语言 TCL

    -- TCL /* Transcation Control Language 事务控制语言 事务:一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行 案例:转账 name ...

  5. MySQL数据库笔记三:数据查询语言(DQL)与事务控制语言(TCL)

    五.数据查询语言(DQL) (重中之重) 完整语法格式: select 表达式1|字段,.... [from 表名 where 条件] [group by 列名] [having 条件] [order ...

  6. mysql 事物控制语言

    事务控制语言(DTL)    什么是事务        通常,在此之前,我们说,一条语句使用一个分号(;)来结束,并得到执行.        那么我们说,这个“一次性执行”的过程,可以称为“一个事务” ...

  7. MySQL事务提交过程(一)

    MySQL作为一种关系型数据库,已被广泛应用到互联网中的诸多项目中.今天我们来讨论下事务的提交过程. MySQL体系结构 由于mysql插件式存储架构,导致开启binlog后,事务提交实质是二阶段提交 ...

  8. MySQL入门详解(二)---mysql事务、锁、以及优化

    MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在一个商城系统中,用户执行购买操作,那么用户订单中应该加一条,库存要减一条,如果这两步由于意外只进行了其中一步那么就会发生很大的问题.而事 ...

  9. MySQL事务提交过程

    一.MySQL事务提交过程(一) MySQL作为一种关系型数据库,已被广泛应用到互联网中的诸多项目中.今天我们来讨论下事务的提交过程. 由于mysql插件式存储架构,导致开启binlog后,事务提交实 ...

随机推荐

  1. Unity3D内存优化案例讲解

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...

  2. [置顶] 【机器学习PAI实践八】用机器学习算法评估学生考试成绩

    (本文数据为实验用例) 一.背景 母亲是老师反而会对孩子的学习成绩造成不利影响?能上网的家庭,孩子通常能取得较好的成绩?影响孩子成绩的最大因素居然是母亲的学历?本文通过机器挖掘算法和中学真实的学生数据 ...

  3. UDP:rfc768/广播和多播/IGMP

    封装情况:

  4. wampserver2.5的php.ini位置在wamp\bin\apache\apache2.4.9\bin

    wampserver2.5的php.ini位置在wamp\bin\apache\apache2.4.9\bin php.ini有多个地方,C:\wamp\bin\php\php5.5.12下面有php ...

  5. bzoj 4811 由乃的OJ

    bzoj 4811 由乃的OJ 考虑树链剖分. 树剖后用一颗线段树维护一段连续区间,类似于一个函数,各位上进入 \(0/1\) ,输出的数字分别是什么.注意到最多只有 \(64\) 位,可以用一个 \ ...

  6. 20179223《Linux内核原理与分析》第九周学习笔记

    视频学习 进程调度与进程调度的时机分析 不同类型的进程有不同的调度需求 第一种分类: --I/O-bound:1.频繁的进行I/O:2.通常会花费很多时间等待I/O操作的完成 --CPU-bound: ...

  7. asp.net core microservices 架构之 分布式自动计算(一)

       一:简介   自动计算都是常驻内存的,没有人机交互.我们经常用到的就是console job和sql job了.sqljob有自己的宿主,与数据库产品有很关联,暂时不提.console job使 ...

  8. java基本类型和封装类型区别及应用

    1.基本类型只能按值传递,而每个基本类型对应的封装类是按引用传递的. 2.从性能上说java中的基本类型是在堆栈上创建的,而所有的对象类型都是在堆上创建的,(对象的引用在堆栈上创建).比如 Integ ...

  9. rem自适应原理

    rem自适应原理 rem是根据html的font-size大小来变化,正是基于这个出发,我们可以在每一个设备下根据设备的宽度设置对应的html字号,从而实现了自适应布局.更多介绍请看这篇文章:rem是 ...

  10. 在Eclipse中导入dtd和xsd文件,使XML自动提示

    DTD 类型约束文件    1. Window->Preferences->XML->XML Catalog->User Specified Entries窗口中,选择Add ...