-- TCL
/*
Transcation Control Language 事务控制语言 事务:一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行 案例:转账
name 余额
麦克雷 1000
天使 1000 update 表 set 余额=500 where name = '麦克雷';
意外
update 表 set 余额=1500 where name = '天使'; 出现错误或执行失败,则回滚。3 SHOW ENGINES
可以看到只有InnoDB支持事物 事物的ACID属性
1.Atomicity 原子性:一个事务是不可再分割的工作单位,事务中的操作要么都发生,要么都不发生。
2.Consistency 一致性:事务必须使数据库从一个一致状态变成另一个一致性状态。例如转账完成后,余额的和还是2000。
3.Isolation 隔离性:一个事务的执行不受其他事务干扰,并发时各个事务之间不能互相干扰。
4.Druability 持久性:一个事务一旦被提交,它对数据库中的数据的改变是永久的。
*/ -- 隐式事务:事务没有明显的开始和结束标记 如insert,update,delete语句
SHOW VARIABLES LIKE 'autocommit'; -- 默认是自动开启的 -- 显式事务:事务具有明显的开启和结束的标记
/*
前提:必须先设置自动提交功能为禁用
set autocommit = 0;
开启事务 可选
start transaction
编写sql语句(select insert update delete)
语句1,
语句2,
...
结束事务
commit 提交事务
rollback 回滚事务
*/
CREATE TABLE IF NOT EXISTS account(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20),
balance DOUBLE
); INSERT INTO account(username,balance) VALUES ('麦克雷',1000),('天使',1000); -- 转账
SET autocommit = 0;
START TRANSACTION;
UPDATE account SET balance = 500 WHERE username = '麦克雷';
UPDATE account SET balance = 1500 WHERE username = '天使';
COMMIT; SELECT * FROM account;

事务的隔离级别

/*
当同事运行多个事务,当这些事务访问数据库中相同的数据时,如果没有采取必要的隔离机制,就会导致并发问题 对于2个事务 T1 T2 脏读:T1读取了T2更新但还没提交的字段,若T2回滚,T1读取的内容就是临时无效的;
不可重复读:T1读取一个字段,然后T2更新了该字段后,T1再读同一字段,值发生了改变;
幻读:T1从表中读取了一些字段,T2插入了一些新行之后,如果T1再次读取,就会多出几行。 设置隔离级别:
read uncommited
read commited
repeatable read
serializable mysql支持:四种, 默认隔离级别:repeatable read
oracle支持:read commited,serializable,read only 默认隔离级别:read commited */

小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表

 

-- 显示隔离级别
SELECT @@tx_isolation -- 设置隔离级别
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED -- 设置保存点 savepoing 只能搭配rollback
SET autocommit = 0;
START TRANSACTION;
DELETE FROM account WHERE id = 1;
SAVEPOINT a;
DELETE FROM account WHERE id = 2;
ROLLBACK TO a;

<MySQL>入门四 事务控制语言 TCL的更多相关文章

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

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

  2. mysql事务控制语言TCL

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

  3. MySQL进阶15--TCL事务控制语言--建立结束事务/设置断点--默认隔离级别--脏读/幻读/不可重复读

    #TCL事物控制语言 : /* Transaction control language : 事物控制语言 事务: 一个或者一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行; ...

  4. mysql分类和事务回滚

    主要内容: ***数据定义语言DDL重点 ***数据操纵语言DML重点 数据查询语言DQL重点 ---事务控制语言TCL ---数据库控制语言DCL ---主键(primary key) ---数据冗 ...

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

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

  6. oracle学习笔记(四) DQL数据查询语言和TCL 事务控制语言

    DML 数据管理语言 Data manage language insert, update, delete以及select语句,不过,有人也把select单独出来,作为DQL 数据查询语言 data ...

  7. oracle学习笔记(四) DML数据控制语言和TCL 事务控制语言

    DML 数据管理语言 Data manage language insert, update, delete以及select语句,不过,有人也把select单独出来,作为DQL 数据查询语言 data ...

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

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

  9. MySQL概述及入门(四)

    MySql概述及入门(四) 什么是MySQL的锁? 数据库锁定机制,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则,简单说,就是不让别人动 总的来说,MySQL各 ...

随机推荐

  1. P1196 [NOI2002]银河英雄传说(并查集)

    P1196 [NOI2002]银河英雄传说(并查集) 本题关键 用两个一维数组表示了一个稀疏的二维数组. 这两个一维数组一个表示祖先(就是最前面那个),一个表示距离祖先的距离. 并且还有一个关键点是, ...

  2. 红米note怎么打开USB调试模式

    红米note到货后,打开USB调试模式是一些新手很棘手的问题,所以要手机助手成功识别红米note,你必须打开红米note的USB调试模式.在安卓4.2版本中,系统的USB调试模式不是非常简单地被打开的 ...

  3. luogu 3953 逛公园

    noip2017 D1T3 逛公园 某zz选手看到数据范围直接就最短路计数了,结果写错了爆零 题目大意: N个点M条边构成的有向图,且没有自环和重边.其中1号点是起点,N号点是公园的终点,每条边有一个 ...

  4. SYSUCPC2017 1007 Tutu’s Array II

    题目大意:有A个0和B个1,每次取两个出来进行{XNOR,NAND,NOR}操作生成一个新的0/1,直到只剩一个元素.问最后是否可能剩下一个0,是否可能剩下一个1. XNOR 比较特殊 a XNOR ...

  5. P3573 [POI2014]RAJ-Rally

    传送门 很妙的思路 首先这是一个DAG,于是我们先在原图和反图上各做一遍,分别求出\(diss_i\)和\(dist_i\)表示从\(i\)点出发的最短路和以\(i\)为终点的最短路 我们考虑把点分为 ...

  6. Extjs grid禁用头部点击三角下拉菜单

    表格头部的三角在点击的时候禁止出现下拉菜单,给每一列添加属性menuDisabled:true xtype:'grid', enableColumnResize:false, columns:[ {t ...

  7. Classic BADI总结

    这里对sap Classic Badi 做一下总结,虽然已经是过时的技术了. Classic BADI的创建 Classic BADI的实施 Classic BADI的调用及运行原理 New BADI ...

  8. hadoop2.x 常用端口及定义方法

    一 常用端口号 1 HDFS 2 YARN 3 HBase 4 Hive 5 ZooKeeper 二 Web UIHTTP服务 1 对于存在 Web UIHTTP服务的所有 hadoop daemon ...

  9. ASP.NET SQL 总结(2)

    Sql常见面试题(总结) 1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name   kecheng   fenshu 张三     语文       81 张三     数学       ...

  10. [C++ STL] 各容器简单介绍

    什么是STL? 1.STL(Standard Template Library),即标准模板库,是一个高效的C++程序库. 2.包含了诸多常用的基本数据结构和基本算法.为广大C++程序员们提供了一个可 ...