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

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

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

简单来说,“一条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. c# 验证码图片生成类

    using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D ...

  2. VM遇到的问题参考

    http://saturn.blog.51cto.com/184463/950731/

  3. 在VC2015里包含了lib库,但没有设置对路径的出错

    它的提示出错如下: 这时需要在路径: 在附加的目录里添加上lib的路径. 1. RPG游戏从入门到精通 http://edu.csdn.net/course/detail/5246 2. WiX安装工 ...

  4. 一名十年Java程序员回忆阿里面试经历——揭开阿里面试的“遮羞布”

    阿里面试经历 去阿里面试可以说非常非常的偶然和戏剧性,因为本人根本没投简历,以至于阿里hr给我电话的时候我一度认为是诈骗电话.因为深圳这家公司不错我还想在这里干个两年左右再考虑考虑. 这个时候的本人已 ...

  5. nginx and node.js配合使用 helloworld

    nginx是最好的反向代理服务器. Node.js是... 好吧 ,不介绍了,猛击这里 现在小介绍下怎么用nginx和node.js配合使用. 先写个helloworld.js var http =  ...

  6. XCOde 5 的界面布局一些新特性

    1.问题 •在iOS程序中,大部分视图控制器都包含了大量的代码用于设置UI布局,设置控件的水平或垂直位置,以确保组件在不同版本的iOS中都能得到合理的布局 •甚至有些程序员希望在不同的设备使用相同的视 ...

  7. mongo 指令

    简单查询1: db.find( {}, {} )  第一个{} 是条件,第二个{}是需要那些属性, db.find( {} )      第二个{}没有,代表返回所有属性 db.find( {age: ...

  8. JPA无法删除对象【实际项目解决办法】

    并非通用, 根据自己实际情况来 不能删除前的dao方法 public void delete(CmsProjectNew bean); 可以删除后的dao方法 @Modifying @Query(&q ...

  9. BZOJ4689 Find the Outlier 【高斯消元】*

    BZOJ4689 Find the Outlier Description Abacus教授刚刚完成了一个制作数表的计算引擎的设计.它被设计用于同时计算一个多项式在许多点的取值.例如对于多项式 f(x ...

  10. BZOJ1878 SDOI2009 HH的项链 【莫队】

    BZOJ1878 SDOI2009 HH的项链 Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的 ...