【MySQL 第十二天 事务的介绍|InnoDB使用事务】

【MySQL 第十二天 事务的介绍|InnoDB使用事务

在这里插入图片描述

生命不息,学习不止


sql>mysql_7">【1】sql>mysql事物的介绍

在这里插入图片描述

atomicity 原子性:所有事情是统一的整体,必须一起执行,或者都不执行
consistency:一致性 -》数据需要保证一致性
isolation :隔离性 -》对其他不显示
durability:持久性 

在这里插入图片描述


sql>mysql_20">【2】sql>mysql事务处理的方法

【1】 rollback:n. 回降;削减;还原;回退
v. 还原;回退
【2】 commit:v. 犯;干;使(人;组织)作出保证;使承担义务;约束;交托;托付;托运
【3】identifier: n. 鉴定人;识别人;鉴定物;识别物;认同者;支持者;标识符
【4】savepoint : 保存点
【5】rollback TO identifier: 回滚到标识符

== 以下几句要深入理解==
在这里插入图片描述

【1】start transaction : 开始交易
【2】autocommit : 自动提交

在这里插入图片描述


举例1

-- 创建表 插入数据
create table mytest(
	id int primary key,
	name varchar(30)
);

-- 开始事务
begin;
insert into mytest values(1,'test01');
insert into mytest values(2,'test02');
commit; -- 提交事务

-- 查看
select *from mytest;

-- 插入数据
begin;
insert into mytest values(3,'test03');
rollback;

begin;
insert into mytest values(4,'test04');
savepoint s1; -- 保存点1
insert into mytest values(5,'test05');
savepoint s2;-- 保存点2
insert into mytest values(6,'test06');
rollback to s2; -- 回滚s2  即代码只执行s2 所以test06无法插入
commit;

在这里插入图片描述


举例2 从不同的平台查看事务 体现事务的隔离性



-- 禁止事务的自动提交
set autocommit = 0;
insert into mytest values(7,'test07');
rollback; -- 事务回滚


set autocommit = 0;
insert into mytest values(8,'test08');


-- 查看
select *from mytest;

在这里插入图片描述
在这里插入图片描述

== 解决上面例子,添加提交事务,使得其他平台可见==

-- 禁止事务的自动提交
set autocommit = 0;
insert into mytest values(7,'test07');
rollback; -- 事务回滚


set autocommit = 0;
insert into mytest values(8,'test08');
commit; -- 提交事务

-- 查看
select *from mytest;

在这里插入图片描述
在这里插入图片描述


sql>mysqluInnoDB_119">【3】sql>mysql是u用InnoDB使用事务

在这里插入图片描述
在这里插入图片描述

改变前

图书信息表
在这里插入图片描述
== 读者信息表==
在这里插入图片描述

== 借阅信息表==
在这里插入图片描述

改变后

delimiter //
create procedure borrowproc(in cid char(18),in bid int)
begin 
declare store_1 int;
declare money float(7,3);
select store into store_1 from  bookinfo where book_id = bid; -- 查询图书信息表价格并赋值给store_1
select balance into money from readerinfo where card_id = cid; -- 查询读者信息表余额赋值给money
set autocommit = 0;	-- 禁止自动提交 必须认为手动
insert into borrowinfo values(bid,cid,curdate(),date_add(curdate(),interval 1 month),'否'); -- 插入借阅信息表book_id card_id 当前日期 还书日期 一个月 否 
update bookinfo set store = store-1 where book_id = bid; -- 图书信息表 图书库存减一 更新值
update readerinfo set balance =  balance - (select price from bookinfo where book_id = bid)*(0.05) where  card_id = cid; -- 读者信息表余额插入更新

if store_1 = 0 or money <= 200 then
	rollback; -- 回滚 以上操作全部取消
else 
	commit;	-- 提交事务 执行成功
end if;
end//
delimiter ;

-- 查看相关表
select *from bookinfo;
select *from borrowinfo;
select *from readerinfo;

-- 条用储存过程
call borrowproc('52242855555',1);


在这里插入图片描述


图书信息表
在这里插入图片描述

== 读者信息表==
在这里插入图片描述

== 借阅信息表==
在这里插入图片描述


坚持,最后还剩两节了


http://www.niftyadmin.cn/n/2650.html

相关文章

【计算机组成原理】定点数和浮点数

目录 一、概念 1. 定点数 1. 定点小数 2. 定点整数 3. 定点数表示的范围 2. 浮点数 1. 浮点数的表示形式 2. 浮点数的表示范围 3. 浮点数的规格化 二、重点 1. 将十进制数转换为浮点数 2. 将浮点数转换为十进制数 一、概念 1. 定点数 定点数表示法约定计算…

查题接口api

查题接口api 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;点击跳转&am…

公众号搜题接口系统使用方法

公众号搜题接口系统使用方法 本平台优点&#xff1a;免费查题接口搭建 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a;题库后台http://daili.jueguangzhe.c…

【阅读笔记】多任务学习之MMoE(含代码实现)

本文作为自己阅读论文后的总结和思考&#xff0c;不涉及论文翻译和模型解读&#xff0c;适合大家阅读完论文后交流想法。 MMoE一. 全文总结二. 研究方法三. 结论四. 创新点五. 思考六. 参考文献七. Pytorch实现⭐一. 全文总结 提出了一种基于**多门混合专家(MMoE)**结构的多任…

【数据库系列】如何查看MongoDB版本信息

目录 一、方法介绍 1 mongo --version 2 使用mongod 3 db.version() 二、总结 三种方式可以查看&#xff0c;依次如下&#xff1a; 一、方法介绍 首先要找到mongo的路径&#xff0c;如果不知道在哪&#xff0c;可以输入 whereis mongo 如下图&#xff0c;找到对应的目录…

linux设置ip地址与换源

1.设置和查看ip地址 1&#xff09; 查看IP地址&#xff1a; ip addr 或者 ifconfig&#xff0c; 注意与windows环境的区别&#xff0c;win中是ipconfig 查看ens33中没有inet属性&#xff0c;表示没有为虚拟机指定ip&#xff0c;那么就无法通过ip连接到虚拟机。 2&#xff09;…

Mysql、Oracle、Sql Service的区别

SQL Service只能在Windows上使用MySQL和Oracle支持跨平台&#xff0c;可以在其他系统上使用&#xff0c;而且可以支持数据库不同系统之间的移植MySQL开源是免费的SQL Service和Orcale是要钱的按从小到大排序MySQL很小、SQL Service居中、oracle最大oracle支持大并发量&#xff…

深度学习入门(十四)数值稳定性和模型初始化

深度学习入门&#xff08;十四&#xff09;数值稳定性和模型初始化前言数值稳定性和模型初始化课件数值稳定性神经网络的梯度数值稳定性的常见两个问题例子&#xff1a;MLP梯度爆炸梯度爆炸的问题模型初始化和激活函数让训练更加稳定让每层的方差是一个常数权重初始化例子&…