SQL中什么是事务

article/2025/10/6 23:37:24

SQL中什么是事务

  • 事务的概念:

事务是在数据库上按照一定的逻辑顺序执行的任务序列,既可以由用户手动执行,也可以由某种数据库程序自动执行。事务就是一些SQL语句组(每条单独的SQL语句也算一个事务),其中事务中的SQL语句一个执行失败,其余全部回滚。

  • 事务的特点:

原子性:事务中的SQL语句的操作都是一个整体,是不可分割的,并不会只执行其中一句,保证事务中的所有操作都执行完毕,其中事务里一个SQL语句出错,整个事务全部回滚,回滚到之前操作的原始状态

一致性:如果事务成功执行,在同一个时间点的所有事务读取的信息一致。

隔离性:每个事务都互不影响,保证不同的事务相互独立、透明地执行。

持久性:当事务执行完毕时,它对数据的影响会保存到数据库中,即使出现系统故障,之前成功执行的事务的结果也会持久存在。

  • 事务的意义:

事务的存在保证了数据的完整性,事务中对数据的更改不会因为一个SQL语句错误而更改其他相应数据,当多个应用程序在高并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰

  • 事务的示例

创建一个数据库

--创建名字为 INDEXK 的数据库
create database INDEXK
go
use INDEXK
go

创建一个数据表

--创建一个用户信息表
create table INFO
(ID int primary key identity,						--主键Name varchar(20) not null,							--姓名Value int not null check(Value<110 and Value>0)		--金额
)

用户表中,我们添加约束金额数量不得大于110元,(以便体现后面出事务的重要性)

向表中添加数据

--添加相应数据(张三,李四)
insert into INFO values('张三',100),('李四',90)

问题:李四想转账给张三10元,(李四Values-10,张三Values+10)

我们可以看出,这时李四的金额扣10元,张三的金额加10元就可以了。
如果我们不用事务,正常的SQL语句就是这样;

--修改相应数据
update INFO
set Value = 110
where Name = '张三'
update INFO
set Value = 80
where Name = '李四'

可是如果在执行语句出错时,或者在运行SQL语句时出现各种错误(这里错误是约束报错:超出约束值),那么数据会怎么样变化呢?
报错信息
表中数据信息
我们可以看出当上一个语句报错时,第二个语句继续执行,可是这样就违背了我们数据的完整性,所以,我们在处理SQL语句时,我们常常套用事务来一起处理,我们一起来看看事务的作用

事务使用

事务语句:
begin transaction 事务名
SQL语句
if @@ERROR!=0 --@@ERROR 如果前一个T-SQL语句没有出现错误,则返回0.
rollback transaction --回滚(撤销事务)
else
commit transaction 事务名 --提交事务

//语句解析
begin transaction --意思为开启一个事务
@@ERROR --是为一个错误代码,当SQL语句发生错误时,函数会被附上值,
rollback transaction --回滚(撤销事务)
commit transaction --提交事务

--开启一个名为t1_INFO的事务
begin transaction t1_INFOupdate INFO
set Value = 80
where Name = '李四'
update INFO
set Value=110
where Name = '张三'if @@ERROR!=0							--@@ERROR  如果前一个T-SQL语句没有出现错误,则返回0.rollback transaction					--回滚(撤销事务)elsecommit transaction t1_student	--提交事务

我们在去执行这个事务时
事务执行信息

事务执行结果
我们发现,数据并没有被修改,事务中SQL修改数据发生错误,不过哪一个出现错误,整个事务的SQL语句都不会被执行(全部回滚),这样就保证了数据的完整性

问题:张三想转账给李四10元,(张三Values-10,李四Values+10)

如果转账的人反过来呢(约束值并未超过)

--开启一个名为t1_INFO
begin transaction t1_INFOupdate INFO
set Value=90
where Name = '张三'
update INFO
set Value = 100
where Name = '李四'if @@ERROR!=0	--@@ERROR  如果前一个T-SQL语句没有出现错误,则返回0.rollback transaction		--回滚(撤销事务)else
commit transaction t1_student	--提交事务

事务执行信息
事务执行结果

可以看出SQL语句都能正常执行这样保证了数据的一致性
好了,SQL事务就讲到这里了,欢迎大家留言评论


http://chatgpt.dhexx.cn/article/npxFnrIK.shtml

相关文章

什么是事务?事务的特性?

在mysql中&#xff0c;事务是一种机制、一个操作序列&#xff0c;是访问和更新数据库的程序执行单元。事务中包含一个或多个数据库操作命令&#xff0c;会把所有的命令作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这一组数据库命令要么都执行&#xff0c;要么都不执…

粒子群优化算法求解函数最值

一、实验题目 计算如下二元函数的最小值&#xff1a; &#xff08;其中自变量x、y的范围均为[-50, 50]&#xff09; 用matlab代码实现。代码必须能一键运行。最后输出x,y和z的最优值及收敛到最优值所需的迭代步数。算法关键参数需要注释清楚&#xff08;如权重因子、学习因子…

粒子群优化算法python

粒子群优化算法PSO 粒子群优化算法基本原理算法步骤代码实现 粒子群优化算法 一群鸟在随机搜索食物&#xff0c;在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是它们知道当前的位置离食物还有多远。那么&#xff0c;找到食物的最简单有效的方法就是搜寻离食物最近…

基于粒子群优化算法的函数寻优算法

文章目录 一、理论基础二、案例背景1、问题描述2、解题思路及步骤 三、MATLAB程序实现1、PSO算法参数设置2、种群初始化3、寻找初始极值4、迭代寻优5、结果分析 四、惯性权重1、惯性权重的选择2、 ω \omega ω变化的算法性能分析 五、参考文献 一、理论基础 粒子群算法(parti…

自适应粒子群优化算法的MATLAB性能仿真

UP目录 一、理论基础 二、核心程序 三、测试结果 一、理论基础 粒子群优化&#xff08;PSO&#xff09;是一种基于群体的随机优化技术。与其它基于群体的进化算法相比&#xff0c;它们均初始化为一组随机解&#xff0c;通过迭代搜寻最优解。不同的是&#xff1a;进化计算遵循…

PSO粒子群优化算法

1算法简介 粒子群优化算法&#xff0c;在1995年由Eberhart博士和kennedy博士提出&#xff0c;源于对鸟群捕食的行为研究。该算法最初是受到飞鸟集群活动的规律性启发&#xff0c;进而利用群体智能建立的一个简化模型。算法流程图如下所示。 核心公式&#xff08; 更新速度和位…

PSO 粒子群优化算法

粒子群优化算法&#xff08;PSO&#xff09; Particle Swarm Optimization 1、 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation)&#xff0c;1995 年由Eberhart 博士和kennedy 博士提出&#xff0c;源于对鸟群捕食的行为研究 。该算法最初是受到…

粒子群优化算法及MATLAB实现

上一篇博客是关于蚁群优化算法的&#xff0c;有兴趣的可以看下 https://blog.csdn.net/HuangChen666/article/details/115913181 1. 粒子群优化算法概述 2. 粒子群优化算法求解 2.1 连续解空间问题 2.2 构成要素 2.3 算法过程描述 2.4 粒子速度更新公式 …

粒子群优化算法(PSO)python实践

1 算法介绍和原理 1.1 算法原理 强烈推荐知乎大佬的这篇文章&#xff1a;粒子群优化算法(Particle Swarm Optimization, PSO)的详细解读 - 知乎 (zhihu.com)。该文章详细介绍了算法的原理、算法流程、参数解释和一些Tips&#xff0c;这里就不过多赘述了。 粒子群优化算法&am…

粒子群优化算法python实现

文章目录 前言一、粒子群优化算法是什么&#xff1f;二、算法流程三、算法的python实现实验结果 前言 首先简单介绍粒子群优化算法&#xff0c;粒子群优化算法的python实现&#xff08;含代码&#xff09; 一、粒子群优化算法是什么&#xff1f; 粒子群优化算法(Particle Swa…

【优化算法】粒子群优化算法简介

这里是引用 文章目录 1. 简介2. 涌现复杂性3. 鸟群智能建模4. 代码实现5. Conclusion参考资料 1. 简介 人工智能是计算机科学的一个大领域&#xff0c;它模拟计算机中的智能行为。在此基础上&#xff0c;提出了一种基于元启发式&#xff08; metaheuristic&#xff09;的粒子群…

粒子群优化算法(Particle Swarm Optimization)

转自&#xff1a;https://www.cnblogs.com/21207-iHome/p/6062535.html 粒子群算法的思想源于对鸟/鱼群捕食行为的研究&#xff0c;模拟鸟集群飞行觅食的行为&#xff0c;鸟之间通过集体的协作使群体达到最优目的&#xff0c;是一种基于Swarm Intelligence的优化方法。它没有遗…

粒子群优化(PSO)算法

一.算法思想 粒子群算法( Particle Swarm Optimization, PSO)最早是由Eberhart和Kennedy于1995年提出,它的基本概念源于对鸟群觅食行为的研究。设想这样一个场景:一群鸟在随机搜寻食物,在这个区域里只有一块食物,所有的鸟都不知道食物在哪里,但是它们知道当前的位置离食…

智能优化算法——粒子群优化算法(PSO)(小白也能看懂)

前言&#xff1a; 本文主要参考B站的一篇学习视频后&#xff0c;加之自己的理解和浓缩精华&#xff0c;不想看文字的可以直接划到末尾去b站看原视频&#xff0c;非常通俗易懂。 理论知识&#xff1a; 感性认知&#xff1a;如下面一张图片所示。在一个范围内&#xff0c;以三…

智能算法系列之粒子群优化算法

本博客封面由ChatGPT DALLE 2共同创作而成。 文章目录 前言1. 算法思想2. 细节梳理2.1 超参数的选择2.2 一些trick 3. 算法实现3.1 问题场景3.2 python实现 代码仓库&#xff1a;IALib[GitHub] 前言 本篇是智能算法(Python复现)专栏的第三篇文章&#xff0c;主要介绍粒子群优化…

粒子群优化算法(PSO)

粒子群优化算法&#xff08;PSO&#xff09; 粒子群优化算法&#xff08;PSO&#xff09;是一种进化计算技术&#xff0c;源于对鸟群捕食行为的研究。该算法最初是受到飞鸟集群活动的规律性启发&#xff0c;进而利用群体智能建立的一个简化模型。粒子群算法在对动物及群活动行…

数学建模——粒子群优化算法(PSO)【有详细样例 + 工具:matlab】(万字总结)

文章目录 一、粒子群优化算法(PSO)是什么&#xff1f;二、粒子群优化算法有什么用&#xff1f;三、粒子群优化算法的适用范围&#xff1f;四、算法简介(有助于理解)五、算法流程第一步&#xff1a;初始化第二步&#xff1a;计算粒子的适应度第三步&#xff1a;更新个体极值与全…

粒子群优化算法(PSO)附代码

文章目录 1 算法介绍2 算法模型3 实现步骤4 MATLAB代码实现PSO算法4.1. main.m4.2. 运行结果 1 算法介绍 粒子群优化算法(Particle Swarm Optimization&#xff0c;PSO)是一种经典的群智能算法&#xff0c;该算法灵感源自于鸟类飞行和觅食的社会活动&#xff0c;鸟群通过个体之…

浏览器添加划词翻译插件

网站&#xff1a;https://github.com/Selection-Translator/crx-selection-translate 安装下载的扩展程序

Chrome划词翻译-Saladict

Saladict 沙拉查词是一款专业划词翻译扩展&#xff0c;为交叉阅读而生。大量权威词典涵盖中英日韩法德西语&#xff0c;支持复杂的 划词操作、网页翻译、生词本、PDF&#xff0c;以及 Vimium 全键盘操作 。 迄今为止最好用的网页划词翻译插件。 下载安装地址&#xff1a;Chrome…