MySQL—事务
目录
1.事务的简介:
2.使用事务
2.1 开启事务
2.2 自动提交
2.3 使用范围
2.4 事务的属性
1.事务的简介:
介绍事务之前,我们先来看一个经典的场景:银行转账。
假如a想要把自己的账户上的10万块钱转到b账户上,这时就需要先从a账户中扣除10万元,再给b账户上加上10万元。
如果从a账户中扣除10万元时发生了错误,会出现什么情况嫩?结果可能导致一下两种情况。
- a账户中的10万元没有扣除成功,b账户加上了10万元。
- a账户中的10万元扣除成功,b账户没有加上10万元。
这种情况是绝对不允许的,“a账户扣除10万元”和“b账户加上10万元”这两个操作应给作为一个不可分割的整体操作才行。如果“a账户扣除10万元”的操作失败,那么“b账户加上10万元”的操作应该取消。
实际上,将多个操作作为一个整体来处理,像这样的功能我们称为“事务”(transaction)。将事务开始之后的处理结果反映到数据库中的操作称为“提交”(commit),不反映到数据库而是回复成原来状态的操作称为“回滚”(rollback)。
2.使用事务
如果使用delete from product:这样的SQL语句会把整个表的数据都给删除,并且是无法恢复的。如果我们希望删除之后还能恢复,此时可以使用事务来实现。
2.1 开启事务
语法:
start transaction;

此时事务已经开启了。
开启事务后再去执行下面的操作。
-- 删除数据
delete from student;--查看表
select *from student;
删除后,student表里面的数据都没有了。
由于前面开启了事务,所以现在我们有两个选择:commit或rollback。如果想要回复数据,我们可以使用rollback语句,然后再执行查看表的代码。
-- 回滚
rollback;
-- 查看表
select *from student;
执行后,删除的数据也回来了。
如果不执行rollback而是commi,那么删除操作的结果就会反映到数据库中,然后所有的数据都会被删除。
2.2 自动提交
默认情况下,也就是不手动开启事务,MySQL的处理都是直接被提交的。也就是说,所有的操作都会自动执行“commit”。
自动提交事务功能在默认情况下处于开启状态的,如果我们手动使用start transaction开启了事务,那么后面就不会自动提交,而必须由我们手动执行commit来提交。
当然也可以通过下面的语句将自动提交功能关闭。
set autocommit = 0;
关闭自动提交功能后,如果想要重新开启该功能,我们可以执行下面的代码来实现:
set autocommit = 1;
2.3 使用范围
MySQL启动了事务之后,大多数操作都可以通过回滚来进行还原。不过下面这些操作时无法还原的,这一点要记住。
- drop database
- drop table
- drop view
- alter table
2.4 事务的属性
在MySQL中,事务有严格的定义,必须同时满足四个属性才行:原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability)。这四个属性通常又被称为“ACID”特性。
- 原子性:事务作为一个整体来执行,所有操作要么都执行,要么都不执行。
- 一致性:事务应确保数据库的状态,从一个一致状态转变为另一个一致状态。
- 隔离性:当多个事务并发执行(多个事务同时执行)时,一个事务的执行不应该影响其他事务的执行。
- 持久性:事务一旦提交,它对数据库的修改应该永久保存在数据库中。
相关文章:
MySQL—事务
目录 1.事务的简介: 2.使用事务 2.1 开启事务 2.2 自动提交 2.3 使用范围 2.4 事务的属性 1.事务的简介: 介绍事务之前,我们先来看一个经典的场景:银行转账。 假如a想要把自己的账户上的10万块钱转到b账户上,这…...
二、PyCharm基本设置
PyCharm基本设置 前言一、设置中文汉化二、设置代码字体颜色三、设置鼠标滚轮调整字体大小四、修改 PyCharm 运行内存4.1 方式一4.1 方式二 五、显示 PyCharm 运行时内存六、设置代码模版配置的参数有: 七、PyCharm设置背景图总结 前言 为了让我们的 PyCharm 更好用…...
SSH流量秒变HTTPS —— 筑梦之路
背景说明 很多时候对外开放仅有80 443端口,若想要ssh服务器是比较困难的。这里介绍使用opensslHAProxy绕过限制。 解决思路 把SSH流量伪装成HTTPS流量,从443端口传输。 OpenSSL: 一个强大的开源加密工具包,我们用它来给SSH流量加密,让它看起来像HTTPS。 HAProxy…...
tkinter Listbox 列表框实现多列对齐排列并绑定下拉框和滚动条
from tkinter import * from tkinter import ttk, Button, Canvas, Listbox, Entry, LabelFrame, IntVar, Checkbutton, messageboximport win32print root Tk() root.title("tkinter Listbox 列表框实现多列对齐排列") root.geometry(550x450)def callback2(t, eve…...
Kafka 启用 JMX
以下是在 Kafka 服务启动时启用 JMX 的步骤: 找到 Kafka 的启动脚本,通常在 Kafka 安装目录的 bin 子目录下 编辑启动脚本(例如 kafka-server-start.sh),在其中设置 JMX 参数。 在启动脚本中添加以下环境变量设置&a…...
G1(Garbage First)垃圾回收实战
GC过程 G1(Garbage First)是JVM中的一种垃圾回收器,设计用于处理具有大堆内存的应用程序,减少GC停顿时间,并提供更可预测的垃圾回收性能。G1的垃圾回收过程主要分为以下几个阶段: 1. 年轻代垃圾回收&…...
ESP32-IDF 通用定时器 GPTimer
目录 一、基本介绍1、配置结构体1.1 gptimer_config_t1.2 gptimer_event_callbacks_t1.3 gptimer_alarm_config_t 2、常用 API2.1 gptimer_new_timer2.2 gptimer_del_timer2.3 gptimer_set_raw_count2.4 gptimer_get_raw_count2.5 gptimer_get_resolution2.6 gptimer_get_captu…...
C#学习笔记(十)
C#学习笔记(十) 第七章 对象的构造方法与实例方法一、对象的构造方法1. 构造方法初识2. 构造方法的创建3. this关键字4. 构造方法的规范和重载4.1 构造方法的规范 5. 对象初始化器5.1 对象初始化器和构造方法的区别 二、对象的实例方法1. 简单应用2.实例…...
出手!快手可灵开源版,AI视频生成整合包!
在2024年,人工智能领域迎来了一位新星——AI视频生成技术。在这场技术革命中,快手推出的可灵AI无疑是最耀眼的明星之一。然而,其高昂的年费让不少用户望而却步,毕竟数千元的开销对于普通人来说是个不小的负担。 幸运的是ÿ…...
【Linux】进程池
目录 进程池 进程池的概念: 手搓进程池: 1、创建信道和子进程 2、通过channel控制子进程 3、回收管道和子进程 进程池 进程池的概念: 定义一个池子,在里面放上固定数量的进程,有需求来了,就拿一个池中…...
实验23:DA呼吸灯实验
电路硬件: 实现功能: 代码: public.h #ifndef _public_H #define _public_H#include "reg52.h" //#include "key.h"typedef unsigned int u16; typedef unsigned char u8;void delay_10us(u16 n); void delay_ms(u16 ms);#endif public.c #include …...
安科瑞智慧能源管理系统EMS3.0在浙江某能源集团有限公司的应用
安科瑞戴婷 Acrel-Fanny 一、项目背景 浙江某能源集团有限公司位于浙江省宁波前湾新区,主营业务范围包括了储能技术服务,光伏风力发电技术服务,充电桩技术服务,新能源项目的施工以及为企业提供配电房运维服务。 随着新能源的兴…...
线性代数学习
1.标量由只有一个元素的张量表示 import torchx torch.tensor([3,0]) y torch.tensor([2,0])x y, x * y, x / y, x**y 2.可以将向量视为标量值组成的列表 x torch.arange(4) x 3.通过张量的索引访问任一元素 x[3] 4.访问张量长度 len(x) 5.只有一个轴的张量,…...
FineReport 数据显示格式
原始 修改 选择「单元格元素>格式」,选择「日期型」,改成 「yyyy 年 MM 月 dd 日」,如下图所示: 注:若列表中没有 yyyy 年 MM 月 dd 日 格式,可手动输入 选择运货费数据列单元格,选择「单元…...
leetcode.204.计数质数
#中等#枚举 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 埃氏筛 枚举没有考虑到数与数的关联性,因此难以再继续优化时间复杂度。接下来我们介绍一个常见的算法,该算法由希腊数学家厄拉多塞(Eratosthenes)提…...
Mysql环境安装
1,下载压缩包 下载压缩包解压 2,配置环境变量 i,高级系统设置-->环境变量-->系统变量-->path-->添加mysql的bin目录路径 ii,新建my.ini文件 basedir:MYSQL的路径 datadir:这个data路径不用手动创建&am…...
请问平面仓系统的盘点如何做?
盘点流程 一、盘点任务生成 手动发起:仓库管理人员可以根据实际需要,在系统中手动发起库存盘点任务。例如,定期进行全盘、抽盘或者在发现库存数据异常时发起盘点。自动触发:系统可以设置自动触发盘点的条件,如每隔一…...
STM32笔记(1)GPIO之点亮LED
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 总结 第一步:先看原理图。PB0输出高电平是,LED1点亮。 初始化完成了两项工作: (1)从时钟上启动所用GPIO所在的总线;…...
自动化工具
自动化工具确保测试准确性的关键在于采取一系列综合性措施,包括但不限于以下几点: 环境一致性:确保测试环境与生产环境尽可能相似,减少环境差异导致的结果不准确。可以通过容器技术(如Docker和Kubernetes)确…...
CTFHUB技能树之HTTP协议——响应包源代码
开启靶场,打开链接: 是个贪吃蛇小游戏,看不出来有什么特别的地方 用burp抓包看看情况: 嗯?点击“开始”没有抓取到报文,先看看网页源代码是什么情况 居然直接给出flag了,不知道这题的意义何在 …...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
