事务的概念-事务的概念、事务的定义(BEGIN TRANSACTION、COMMIT、ROLLBACK)

news2024/12/25 9:14:51

数据库系统中的事务,是保证系统在发生故障后或存在并发操作的情况下,数据库中的数据与企业业务结果相一致

一、事务的概念

在许多数据库应用系统中,数据库用来存储现实世界中一些企业的状态信息其管理的数据

1、概念一

(1)事务就是为了维护企业状态与数据库状态相一致的与数据库交互的程序 

(2)举例

比如银行信息管理系统中的转账事务就是为了反应银行客户的账户间的资金变化,更新数据库中的账户信息,最终使得转账后的数据库中的当前数据,即数据库状态,与银行的账户情况一致

 2、概念二

(1)事务不是一种普通的程序,事务是一组需要一起执行的操作序列,是数据库系统中的逻辑工作单元。

所谓逻辑工作单元,指的是从用户的角度看,事务是数据库系统中执行的最小程序段

3、概念三

(1)对于关系型数据库,事务程序中包含的操作,可以是一条SQL语句、一组SQL语句或一个应用程序段。

在没有显示定义一个事务的情况下,系统默认每个SQL语句就是一个事务

(2)所以如果不把账户A转账1000元到账户B的操作设计的两个更新语句定义在一个事务中,转账操作中的这两个更新语句就是两个事务。那么如何把转账操作涉及的两个数据库更新语句定义为一个转账事务呢?

二、事务的定义

1、用BEGIN TRANSACTION来标记事务的开始

2、然后是事务所包含的SQL语句或程序段

3、最后以两种方式结束事务

(1)一种是以COMMIT语句提交事务,表示事务中的所有操作语句均已执行,其中对数据库的更新操作结果应写到磁盘中的物理数据库中去,数据库进入一个新的状态

(2)事务的另一中结束方式是以ROLLBACK语句回滚事务,该语句的执行表示事务执行的过程中发生了某种故障,事务夭折(abort)不能继续执行,事务夭折前所有已完成的对数据库的更新操作结果应该撤销,使数据库恢复到该事务执行前的数据库状态

 三、事务举例:COMMIT和ROLLBACK的用法

1、把从账户A转账1000元到账户B的转账操作定义为一个事务,并对该事务以COMMIT和ROLLBACK两种不同的方式结束,看一下事务执行后的数据库结果

(1)创建ACCOUNTS表

create table accounts(
acctNo char(20) primary key,
balance float,
check(balance>=0)
);

(2)使用ROLLBACK结束事务

begin transaction

select * from accounts;

update accounts
set balance=balance-1000
where acctNo='A';   /* 从账户A中减去1000元*/

update accounts
set balance=balance+1000
where acctNo='B';   /* 从账户B中加上1000元*/

select * from accounts;

rollback

select * from accounts;

以ROLLBACK语句结束事务时,事务结束前转账成功,而事务结束后事务中对数据库的所有更新操作结果被撤销了,数据库中数据的值又恢复到事务开始时的状态

(2)使用COMMIT结束事务

begin transaction

select * from accounts;

update accounts
set balance=balance-1000
where acctNo='A';   /* 从账户A中减去1000元*/

update accounts
set balance=balance+1000
where acctNo='B';   /* 从账户B中加上1000元*/

select * from accounts;

commit

select * from accounts;

而以COMMIT语句结束事务时可看到事务结束后事务中对数据库的所有更新操作结果被保存在数据库中了

四、小结

1、事务时数据库系统中的逻辑工作单元

2、用SQL语言定义事务

  • BEGIN TRANSACTION
  • COMMIT
  • ROLLBACK

因此,在具体的应用过程中,当我们需要将含有多个数据库操作的语句序列或程序作为一个不可分割的整体进行执行时,就需要使用数据库操作语言来定义一个事务。事务的执行结果有两种情况,要么提交,要么回滚

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

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

相关文章

《昇思25天学习打卡营第3天|张量 Tensor》

文章目录 前言:今日所学:1. 创建张量2. 张量的属性3.张量索引与运算4. NumPy与Tensor的转换5. 稀疏张量 前言: 张量?张亮?张量是什么? 张量是一个可以用来表示在一些矢量、标量和其他张量之间的线性关系的…

博途TIA Portal「集成自动化软件」下载安装,TIA Portal 灵活多变的编程环境

在编程领域,博途TIA Portal以其卓越的编程工具和灵活多变的编程环境,为众多用户提供了前所未有的便利。这款软件不仅支持多种编程语言,如梯形图(Ladder Diagram)、功能块图(Function Block Diagram&#xf…

2024夏促steam商店加载失败、steam无法加载活动怎么办

今年的夏季促销活动终于开始了,一般夏季促销大多是去年和今年的热门游戏,不过也会有不少经典游戏参与活动,都是较低的价格出售。因为最近高考结束,考虑到会有不少新玩家前来入手游戏,为了让大家能顺利找到喜欢的游戏&a…

使用 Elastic ELSER 和 Llama3 的 RAG(使用 Langchain)

在之前的文章 “使用 Llama 3 开源和 Elastic 构建 RAG”,我们讲到了如何使用 Liama3 来结合 Elastic ELSER 来进行 RAG。在今天的文章里,我们来详细使用一个 notebook 来展示如何在本地 Elasticsearch 部署中进行实现。 此交互式 notebook 使用 Langch…

【Linux进程通信】进程间通信介绍、匿名管道原理分析

目录 进程通信是什么? 进程通信的目的 进程通信的本质 匿名管道:基于文件级别的通信方式 站在文件描述符角度-深度理解管道原理 进程通信是什么? 进程通信就是两个或多个进程之间进行数据层面的交互。 进程通信的目的 1.数据传输&#x…

康之味与东兴朱雀桥达成合作,引进40柜越南薇妮她牌NFC果汁饮料

近日,国内知名果汁品牌康之味再次展现其强大的市场影响力与前瞻性的战略眼光,成功与业界佼佼者东兴朱雀桥达成新一轮合作。此次合作的重磅成果,便是康之味顺利拿下40条柜的越南薇妮她VINUT牌NFC人参果汁饮料的进口权。 薇妮她VINUT牌NFC人参果…

msvcr120.dll文件下载的高级教程,修复msvcr120.dll 详细步骤分享

当电脑系统或特定应用程序无法找到或访问到msvcr120.dll文件时,便会导致错误消息的出现,例如“找不到 msvcr120.dll”、“msvcr120.dll丢失”等。这篇文章将大家讨论关于msvcr120.dll文件的内容、msvcr120.dll丢失问题的解决方法,其中最常见的…

【贡献法】2262. 字符串的总引力

本文涉及知识点 贡献法 LeetCode2262. 字符串的总引力 字符串的 引力 定义为:字符串中 不同 字符的数量。 例如,“abbca” 的引力为 3 ,因为其中有 3 个不同字符 ‘a’、‘b’ 和 ‘c’ 。 给你一个字符串 s ,返回 其所有子字符…

AI智能在Type-C领域的应用

随着科技的飞速发展,Type-C接口凭借其卓越的性能和广泛的应用场景,已成为现代电子设备中不可或缺的一部分。而AI智能技术的兴起,为Type-C领域带来了革命性的变革,推动了其功能的进一步完善和应用领域的拓展。本文将探讨AI智能在Ty…

ZABBIX-7.0LTS在线部署部署教程

ZABBIX-7.0LTS在线部署部署教程 环境: 操作系统: ubuntu 22.04zabbix-server版本: 7.0LTS系统配置[需结合监控的业务量提供配置]: 建议2C(CPU)8G(运行) 100GB(存储)架构:LNMP 第一步: 系统初始化 1.配置…

Python逻辑控制语句 之 判断语句--if else结构

1.if else 的介绍 if else :如果 ... 否则 .... 2.if else 的语法 if 判断条件: 判断条件成立,执行的代码 else: 判断条件不成立,执行的代码 (1)else 是关键字, 后⾯需要 冒号 (2)存在冒号…

【网络】计算机网络-基本知识

目录 概念计算机网络功能计算机网络的组成计算机网络的分类 网络地址网络地址的分类 计算机网络相关性能指标速率带宽吞吐量时延时延的种类: 时延带宽积往返时延RTT利用率 概念 计算机网络是指将多台计算机通过通信设备连接起来,实现数据和资源的共享。…

git 代码回退 soft hard区别

一:只是本地修改提交到本地版本库仓库,代码如何回退 git hard 回退 会清除掉 你当前修改的所有文件代码内容 或添加的新文件 把当前文件恢复到没有修改前的状态 git soft 回退 不会清除掉 你当前修改的所有文件代码内容 或添加的新文件 把当前文件恢复到当时修改时的状…

06 Shell编程实战——案例1

脚本编程步骤: 脚本编程一般分为4个步骤,即先确定需求,然后再确定你所要用到的语句, 需求分析:根据系统管理的需求,分析脚本要实现的功能、功能实现的层次、实现的命令与语句等;命令测试&…

K 近邻、K-NN 算法图文详解

1. 为什么学习KNN算法 KNN是监督学习分类算法,主要解决现实生活中分类问题。根据目标的不同将监督学习任务分为了分类学习及回归预测问题。 KNN(K-Nearest Neihbor,KNN)K近邻是机器学习算法中理论最简单,最好理解的算法…

利用python爬取上证指数股吧评论并保存到mongodb数据库

大家好,我是带我去滑雪! 东方财富网是中国领先的金融服务网站之一,以提供全面的金融市场数据、资讯和交易工具而闻名。其受欢迎的“股吧”论坛特别适合爬取股票评论,东方财富网的股吧聚集了大量投资者和金融分析师,他们…

50-2 内网信息收集 - 内网工作环境(域相关知识)

一、工作组 工作组(Work Group)是局域网中最基本的资源管理模式,适用于小规模网络环境。 工作组的定义: 工作组是将不同功能或部门的计算机分组管理的方式。它提供了层次化的网络资源管理,使得组织内的计算机可以按照功能或部门分类。每个工作组有一个自定义的主机名称,…

Java学习【IO流:深入理解与应用(上)】

Java学习【IO流:深入理解与应用(上)】 🍃1.IO流体系结构🍃2.FileOutputStream🍁2.1FileOutputStream写数据的三种方式🍁2.2换行和续写 🍃3.FileInputStream🍁3.1每次读取…

电脑文件kernel32.dll缺失要怎么处理?怎么才能一键修复kernel32.dll文件

关键系统文件kernel32.dll的缺失,这种情况不仅会导致系统运行不稳定,甚至可能完全无法启动某些应用程序。kernel32.dll 是一个至关重要的动态链接库文件,它与Windows操作系统的多个基本操作相关联,包括内存管理、进程和线程的控制…

java热部署idea插件「jrebel安装教程」

告别漫长的项目重启等待,让开发像写诗一样流畅~ jrebel安装包下载 jrebel版本需要下比较老的版本,我用的是22.4.1的版本(如果不差钱,可以支持一下正版,直接选择最新的版本即可) 下载地址:传送门…