09:mysql---事务

news2024/11/26 22:21:11

目录

1:事务简介

2:事务操作

3:事务四大特性

4:并发事务问题

5:事务隔离级别 


1:事务简介

事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

默认MysQL的事务是自动提交的,也就是说,当执行一条DML语句,MysQL会立即隐式的提交事务

2:事务操作

第一种方式

查看/设置事务的提交方式

select @@autocommit;   -- @@autocommit不能有空格否则报错

set @@ autocommit=0;     -- 把事务设置为手动的

1:自动   0:手动

提交事务

commit;

回滚事务

rollback
-- 准备的数据
drop table account;
delete from account;
update account set monkey=3000 where name='王大志';
update account set monkey=2000 where name='自习';
create table account (
id int primary key  auto_increment,
name varchar(20) not null ,
age varchar(20) not null ,
monkey varchar(20) not null 
) comment '人员的信息';
insert into  account (age,name,monkey) values (18,'王大志',3000),(20,'自习',2000);



select @@autocommit;
set @@autocommit=0;
-- 1。 查询王大志三账户余额
select monkey from account where name='王大志';
-- 2。将王大志账户余额-1000
update account set monkey=monkey-1000 where name='王大志';

这里发出错误了
-- 3。将自习账户余额+1000
update account set monkey=monkey-1000 where name='自习';

-- 提交事务
commit
-- 回滚
rollback

sql默认的事务是自动的  但是如果在出现错误时:王大志给自习转账1000元,但是在给自习加上1000元钱之前sql发生错误,  就会导在我王大志-1000 但是自习没有加上1000;      我们这个时候就会把sql的事务该为手动的,在发生错误时我们选择回滚,数据并不会提交到数据库里面而是保证执行sql前的数据;    如果没有sql错误我们选择提交事务把这个命令提交到数据库层面

第二种方式

开启事务--默认改为手动

start transaction  或者 begin;

提交事务

commit

回滚事务

rollback;

3:事务四大特性

原子性 (Atomicity): 事务是不可分割的最小操作单元,要么全部成功,要么全部失败。

一致性(Consisteny): 事务完成时,必须使所有的数据都保持一致状态

隔离性(lsolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行

持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

4:并发事务问题

问题描述
脏读一个事务读到另外一个事务还没有提交的数据。
不可重复读一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。
幻读一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了幻影”。 (查无插有)

 

 

 

5:事务隔离级别 

隔离级别赃读不可重复读幻读
Read uncommitted
Read committed×
Repeatable Read(默认)××
Serializable×××

查看事务的隔离级别

select @@transaction_isolation;

设置事务隔离级别

set [session | global] transaction isolation level {read uncommitted | read committed | repeatable read | serializable}
-- 查看事务隔离级别
select @@transaction_isolation;
-- 设置事务隔离级别
set session transaction isolation level read uncommitted ;
set session transaction isolation level repeatable read ;
-- session设置这次的绘画,更改隔离级别

脏读:

 改变事务级别为,解决脏读问题:

 不可以重复读:

  ​​​​​​​改变事务级别为,解决不可重复读问题:

 幻读:

   ​​​​​​​改变事务级别为,解决幻读问题:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/585584.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

周赛347(模拟、思维题、动态规划+优化)

文章目录 周赛347[2710. 移除字符串中的尾随零](https://leetcode.cn/problems/remove-trailing-zeros-from-a-string/)模拟 [2711. 对角线上不同值的数量差](https://leetcode.cn/problems/difference-of-number-of-distinct-values-on-diagonals/)模拟 [2712. 使所有字符相等…

索引下推(Index Condition Pushdown)

使用一张用户表t_user,表里创建联合索引(name, age)。 如果现在有一个需求:检索出表中名字第一个字是张,而且年龄是10岁的所有用户。那么,SQL语句是这么写的: 复制代码 select * from tuser w…

【教学类-35-01】带笔画步骤图的描字(姓氏)(A4整张)

作品展示: 1、图片一行(0-6):文字简单,写3*412个字 2、图片2行(6-12):笔画适中,写3*39个字 3、图片3行(12-18):笔画适中,…

LeetCode刷题(ACM模式)-03哈希表

参考引用:代码随想录 注:每道 LeetCode 题目都使用 ACM 代码模式,可直接在本地运行,蓝色字体为题目超链接 0. 哈希表理论基础 0.1 哈希表 哈希表(Hash table,也称散列表)是根据关键码的值而直…

Redis(六)主从模式与哨兵机制

文章目录 一、主从模式配置一主二从集群 二、哨兵机制哨兵模式演示:哨兵如何监控节点「主观下线」与[客观下线]哨兵如何选新主节点由哪个哨兵进行转移如何通知客户端新主节点的信息? 一、主从模式 配置一主二从集群 开启三个linux,并安装redis info …

【k8s】【Prometheus】【待写】

环境 k8s v1.18.0 192.168.79.31 master 192.168.79.32 node-1 192.168.79.33 node-2一、Prometheus 对 kubernetes 的监控 1.1 node-exporter 组件安装和配置 node-exporter 可以采集机器(物理机、虚拟机、云主机等)的监控指标数据,能够采…

C++11:可变参数模板、lambda表达式和包装器

目录 一. 可变参数模板 1.1 什么是可变模板参数 1.2 参数包具体值的获取 1.3 emplace/emplace_back接口函数 二. lambda表达式 2.1 lambda表达式的概念和定义方法 2.2 捕捉列表说明 2.3 lambda表达式的底层实现原理 三. 包装器 3.1 function包装 3.2 bind绑定 3.2.…

重估老板电器:加速增长飞轮,迸发品类红利

#王一博同款洗碗机,5月28日,这个话题登上微博热搜,并获得不小关注。数据显示,截至5月29日9:00,该话题一天内引发了166.1万人讨论,阅读量破2.7亿。同时,抖音上,官宣王一博为代言人的话…

Java on Azure 开发工具路线图新发布!

大家好,欢迎来到Java on Azure工具产品的4月更新。让我们首先来谈谈我们对未来几个月的Java on Azure开发工具的投资。在这次更新中,我们还将介绍Azure Service Bus支持和Azure Spring Apps入门模板增强功能。要使用这些新功能,请下载并安装用…

ASEMI单向可控硅BT151参数,BT151封装,BT151体积

编辑-Z 单向可控硅BT151参数: 型号:BT151 存储接点温度范围Tstg:-40~150℃ 工作接点温度范围Tj:-40~125℃ 断态重复峰值电压VDRM:650V 重复峰值反向电压VRRM:650V RMS导通电流IT(RMS):12…

【P42】JMeter 运行时间控制器(Runtime Controller)

文章目录 一、运行时间控制器(Runtime Controller)参数说明二、测试计划设计 一、运行时间控制器(Runtime Controller)参数说明 可以通过时间来确定其后代元素运行多长时间,在时间范围内,后代元素会一直运…

uniapp中根据不同状态跳转不同页面

大纲: 今天我们讲 在uniapp中,如何根据不同的状态跳转到不同的页面。 以下代码,是Tabs标签的展示 🌿 :list"list" 是参数配置,该参数要求为数组,元素为对象,且对象要有name属性&…

mciSendString函数简介(播放音乐以及录音相关操作)

函数功能:播放多媒体音乐,视频等 mciSendString是用来播放多媒体文件的API指令,可以播放MPEG,AVI,WAV,MP3,等等。这个函数有自己的mci指令,可以通过不同的指令实现不同的功能。这里我会详细讲解mciSendString这个函数的常见用法&…

【Web】HTTP代理和反向代理

直接访问 就是从客户端直接访问服务端,相当于我直接去厂家买可乐,没有中间商赚差价 HTTP代理 HTTP代理指在客户端先访问代理服务器,然后由代理服务器去访问服务端,代理服务器收到响应后再转发个客户端,就像我去商店…

【C++】类与对象——六个默认成员函数、构造函数的概念和特征,析构函数的概念和特征

文章目录 1.类的六个默认成员函数2.构造函数2.1构造函数的概念2.2构造函数的特性 3.析构函数3.1析构函数的概念3.2析构函数的特征 1.类的六个默认成员函数 如果一个类中什么成员都没有,简称为空类。   空类中真的什么都没有吗? 并不是,任何…

跨域图像识别

跨域图像识别 跨域图像识别(Cross-domain Image Recognition)是指在不同的数据集之间进行图像分类或识别的任务。由于不同数据集之间的分布差异,跨域图像识别面临着很大的挑战。 以下是几种代表性的跨域图像识别算法: DDC&#…

利用代码实现自动刷网课阅读时长功能 JAVA

目录 前言:理论依据:现实依据:朴素版只能循环阅读不能翻页:升级版 翻页 阅读:如何使用: 前言: 最近不也快结课了,网课该刷的都要刷掉,最近不就把一门思政课刷完了&#…

粉丝经济:互帮互助,众筹,人人帮我我帮人人

目录 用户精准定位: 用户裂变 用户在线“买卖需要注册:为后期思域流量变现 用户容器“APP,小程序”:用户资产化 LBS(一人千面,个性化定制,根据地理位置进行提醒:优惠券”) 粉丝渠道化&…

信息安全实践1.1(网络嗅探)

前言 这个网络嗅探其实就是用wireshark抓包。那时候赶着做,就随便写了点。参考价值比较少。 第一次实践是因为寒假在家摆烂,然后开学前两天做的,所以质量不是很好。不过也算是一次实践,看看就好。 要求 使用网络嗅探工具抓获网络…

TiDB x Bolt丨超强可扩展性与弹性助力超 1 亿用户畅享出行服务

作者:PingCAP 封小明 通过 TiDB 连接全球极限场景和创新场景,是 PingCAP 长期坚持的国际化战略。目前,在全球已有超过 3000 家企业选择 TiDB。无论在游戏、金融、物流、互联网还是智能制造等行业,基于规模化 OLTP 扩容、实时 HTA…