#TCL事物控制语言 :
/*
Transaction control language : 事物控制语言
事务:
一个或者一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行;
事务由单独单元的一个或多个SQL语句组成,在这 个单元中,每个MySQL语句是相互依赖的;
处理事务的关键字:
建立事务:
SET autocommit=0;
START TRANSACTION;
结束事务:
commit;
#rollback; #回滚
设置断点:
SAVEPOINT a; #设置一个回滚点
ROLLBACK TO a; #回滚到保存点a
-----------------------
事务的隔离级别中出现的异常:
脏读: 对于两个事务 T1, T2, T1 读取了已经被 T2 更新但还没有被提交的字段.
之后, 若 T2 回滚, T1读取的内容就是临时且无效的. 
不可重复读: 对于两个事务T1, T2, T1 读取了一个字段, 然后 T2 更新了该字段.
之后, T1再次读取同一个字段, 值就不同了. 
幻读: 对于两个事务T1, T2, T1 从一个表中读取了一个字段, 然后 T2 在该表中插 入了一些新的行.
之后, 如果 T1 再次读取同一个表, 就会多出几行.
---------------------------
(回滚无效)脏读 幻读 不可重复读
read uncommited : √ √ √
read commited : × √ √
repeatable read : × x √
serializable : x x x
--------------------------
Oracle 支持的 2 种事务隔离级别:READ COMMITED, SERIALIZABLE。
Oracle 默认的事务隔离级别为: READ COMMITED 
Mysql 支持 4 种事务隔离级别. Mysql 默认的事务隔离级别 为: REPEATABLE READ ;
----------------------------
查看隔离级别: (未能实现,找不到该命令!!)
select @@tx_isolation;
设置隔离级别:
set session/global(全库) transaction isolation level 隔离级别; */
#1、通过show engines;来查看mysql支持的存储引擎。
SHOW ENGINES; #Engine Support Comment Transactions XA Savepoints
#InnoDB DEFAULT Supports transactions, row-level locking, and foreign keys YES YES YES #2/演示事务的使用步骤:转账
#(1)建立表
CREATE DATABASE test;
DROP TABLE IF EXISTS account;
CREATE TABLE account(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20),
balance DOUBLE
);
INSERT INTO account(username,balance)
VALUES('张无忌',1000),('赵敏',1000);
#(2)开启事务,编写一组事务的语句,结束事务COMMIT(提交)
SET autocommit=0;
START TRANSACTION; UPDATE account SET balance =500 WHERE username='张无忌';
UPDATE account SET balance =1500 WHERE username='赵敏'; COMMIT;
SELECT * FROM account;
#---------------------------------
#: 或者使用#rollback 进行回滚,滚回更新前的结果
SET autocommit=0;
START TRANSACTION;
UPDATE account SET balance =1000 WHERE username='张无忌';
UPDATE account SET balance =1000 WHERE username='赵敏'; ROLLBACK;
SELECT * FROM account; #命令行下设置事务最低的隔离级别 : read uncommitted
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
# 结果: Query OK, 0 rows affected (0.00 sec)
#---------------------------
#2.演示事务对delete 和 truncate 的处理的区别
SET autocommit=0;
START TRANSACTION; DELETE FROM account;
#truncate from account; # 事务不支持这种删除!
ROLLBACK; SELECT * FROM account; INSERT INTO account VALUES(25,'qwq',111),(26,'aaa',222);
#3:演示savapoint(保存点) 的使用
SET autocommit=0;
START TRANSACTION;
DELETE FROM account WHERE id=25;
SAVEPOINT a; #设置一个回滚点
DELETE FROM account WHERE id=25;
ROLLBACK TO a; #回滚到保存点a SELECT * FROM account;

MySQL进阶15--TCL事务控制语言--建立结束事务/设置断点--默认隔离级别--脏读/幻读/不可重复读的更多相关文章

  1. MySQL(25):事务的隔离级别出现问题之 不可重复读

    1. 不可重复读 所谓的不可重复读(Non-Repeatable Read)是指事务中两次查询的结果不一致,原因是在查询的过程中其他事务做了更新的操作. 例如,银行在做统计报表的时候,第一次查询a账户 ...

  2. mysql的默认隔离级别

    原文:https://www.cnblogs.com/rjzheng/p/10510174.html 知识点总结 ------------------------------------------- ...

  3. (7)MySQL进阶篇SQL优化(InnoDB锁-事务隔离级别 )

    1.概述 在我们在学习InnoDB锁知识点之前,我觉得有必要让大家了解它的背景知识,因为这样才能让我们更系统地学习好它.InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION ...

  4. MySQL默认隔离级别为什么是RR

    曾多次听到“MySQL为什么选择RR为默认隔离级别”的问题,其实这是个历史遗留问题,当前以及解决,但是MySQL的各个版本沿用了原有习惯.历史版本中的问题是什么,本次就通过简单的测试来说明一下. 1. ...

  5. SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因

    原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中 ...

  6. SQL Server中的事务与其隔离级别之脏读, 未提交读,不可重复读和幻读

    原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中 ...

  7. Java -- JDBC 事务处理, 事务的隔离级别 脏读 不可重复读 等...

    1. 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 数据库开启事务命令 •start transaction 开启事务 •Rollback  回滚事务 •Commit ...

  8. Spring 声明式事务,propagation属性列表及isolation(隔离级别)

    Spring 声明式事务,propagation属性列表 TransactionDefinition接口中定义,共有7种选项可用: PROPAGATION_REQUIRED:支持当前事务,如果当前没有 ...

  9. Confluence设置MySQL数据库报错:必须使用'READ-COMMITTED'作为默认隔离级别。

    解决方案: mysql -u root -p123456 SET GLOBAL tx_isolation='READ-COMMITTED'; mysql数据库创建 1.设置mysql隔离级别 SET ...

随机推荐

  1. Python离线环境

    一.应用场景 比如:对于数据安全要求比较严格的机房,服务器是不允许上网的.那么我现在开发了一套python程序,需要一些模块,怎么运行? 二.离线包制作 有2个解决方案: 1. 使用requireme ...

  2. socket编程方法,概念

    "蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也.蟹六跪而二螯,非蛇鳝之穴无可寄托者,用心躁也." ------------------------------------- ...

  3. pytorch1.0实现RNN for Regression

    import torch from torch import nn import numpy as np import matplotlib.pyplot as plt # 超参数 # Hyper P ...

  4. [WinForm] - "更新 DataSet 应用程序集对象失败,Visual Studio 自动重启" 之解决

    背景 在 WinForm 解决方案中,更新 DataSet 应用程序集对象失败,Visual Studio 自动重启. 试一试 1. 更新 .xsd 时打开对应的 .Designer.cs.2. 如果 ...

  5. fatfs系统的移植

    integer.h   FATFS的数据类型定义(一般不需要更改,其他的文件都需要引用这个文件的内容) ffcon.h FATFS的配置文件,配置项的各个参数都需要在这里修改 一个细致的讲解fatfs ...

  6. linux安装png2icon方法

    此工具用于将png图片转换为ico格式的文件,一个小工具,但很实用 官网:http://www.winterdrache.de/freeware/png2ico/ 下载: wget http://ww ...

  7. java.lang.RuntimeException: Unable to instantiate activity ComponentInfo异常解决

    不能实例化activity有如下三种情况: 1.没有在Manifest.xml 清单中注册该activity,或者在创建完activity后,修改了包名或者activity的类名,而配置清单中没有修改 ...

  8. 将网站升级为https并自动续期Https证书。

    Let's Encrypt Let's Encrypt 是一个由Internet Security Research Group (互联网安全研究组)提供的免费,自动化和开放的证书颁发机构. 它秉承着 ...

  9. 1.MVC基础-初识MVC,与WebForm比较

    1.Net WebForm的开发模式

  10. NetCore.SignalR.Demo演示

    项目github,点击https://github.com/wangpengzong/NetCore.SignalR.Demo 1.打开服务端Server(\SignalR.Server\bin\De ...