<MySQL>入门四 事务控制语言 TCL
-- 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的更多相关文章
- MySQL数据库笔记三:数据查询语言(DQL)与事务控制语言(TCL)
五.数据查询语言(DQL) (重中之重) 完整语法格式: select 表达式1|字段,.... [from 表名 where 条件] [group by 列名] [having 条件] [order ...
- mysql事务控制语言TCL
Transaction Control Language 事务控制语言 事务:一个或一组sql语句组成一个执行单元,这个执行单元作为不可分割的整体执行.如果某个语句执行错误,整个单元回滚到最初的状态. ...
- MySQL进阶15--TCL事务控制语言--建立结束事务/设置断点--默认隔离级别--脏读/幻读/不可重复读
#TCL事物控制语言 : /* Transaction control language : 事物控制语言 事务: 一个或者一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行; ...
- mysql分类和事务回滚
主要内容: ***数据定义语言DDL重点 ***数据操纵语言DML重点 数据查询语言DQL重点 ---事务控制语言TCL ---数据库控制语言DCL ---主键(primary key) ---数据冗 ...
- 一、TCL事务控制语言 二、MySQL中的约束 三、多表查询(重点) 四、用户的创建和授权 五、MySQL中的索引
一.TCL事务控制语言###<1>事务的概念 事务是访问并可能更新数据库中各种数据项的执行单元. 事务是一条SQL语句,一组SQL语句,或者整个程序. 事务是恢复和并发控制的基本单位. 事 ...
- oracle学习笔记(四) DQL数据查询语言和TCL 事务控制语言
DML 数据管理语言 Data manage language insert, update, delete以及select语句,不过,有人也把select单独出来,作为DQL 数据查询语言 data ...
- oracle学习笔记(四) DML数据控制语言和TCL 事务控制语言
DML 数据管理语言 Data manage language insert, update, delete以及select语句,不过,有人也把select单独出来,作为DQL 数据查询语言 data ...
- MySQL入门详解(二)---mysql事务、锁、以及优化
MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在一个商城系统中,用户执行购买操作,那么用户订单中应该加一条,库存要减一条,如果这两步由于意外只进行了其中一步那么就会发生很大的问题.而事 ...
- MySQL概述及入门(四)
MySql概述及入门(四) 什么是MySQL的锁? 数据库锁定机制,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则,简单说,就是不让别人动 总的来说,MySQL各 ...
随机推荐
- Swing中子元素截获MouseEvent问题
在父元素中绑定MouseMotion监听,但是当鼠标在子元素中时父元素无法收到 这时候需要在子元素中绑定MouseMotion,然后使用: getParent().dispatchEvent(e); ...
- 10.6 Graph Test
一套图论的练习题,各个方面都有挺好的 第一第二题有一定难度(来源POI),第三第四题比较水 但我并没考好 T1 特工 szp T2 洞穴 zaw T3 最短路 line T4 最小差异值 dvalue
- robo 3t 在 ubuntu下安装
如果您尝试安装最新版本robomobo调用可以现在robo3t.或者你尝试在Ubuntu 16.04上安装,按照下面的步骤和你的robomongo安装 下载最新的robomongo tar文件 wge ...
- Code First:Data Anotation (2)
示例一 本例演示与索引有关的内容,模型: using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAn ...
- bzoj4868
http://www.lydsy.com/JudgeOnline/problem.php?id=4868 三分+贪心 我们可以知道这是一个单峰函数 当A>B那么我们每次调整一个的价钱是最佳的,所 ...
- 在WIN7里IE8的开发人员工具打不开的解决办法
IE8新增了开发人员工具,非常不错,比早期的DevToolbar好用多了.不过在我的Win7下使用的时候偶尔会出现一个莫名其妙的问题,就是整个开发人员工具窗口消失了,打不开了.当你使用win+Tab切 ...
- 27. FormPanel类的defaults属性
defaults : Object defaults属性可以包含任意个name/value属性对,这些属性将会被添加到每一个元素中...例如, 为了自动向容器包含的每个Ext.Panel 元素的宽度添 ...
- 基于Flink的视频直播案例(上)
目录 数据产生 Logstash部分 Kafka部分 Flink部分 配置/准备代码 视频核心指标监控 本案例参考自阿里云的视频直播解决方案之视频核心指标监控和视频直播解决方案之直播数字化运营. 基于 ...
- 大神给你分析HTTPS和HTTP的区别(转)
http://www.php100.com/html/it/biancheng/2015/0209/8582.html 今天在做雅虎的时候,发现用第三方工具截取不到客户端与服务端的通讯,以前重来没碰到 ...
- E20171229-hm
specification n. 规格; 说明书; 详述;