什么叫事务? 这些就是数据库特有的术语了。懒虫在这里口头解释:就是把多件事情当做一件事情来处理。也就是大家同在一条船上,要活一起活,要over一起over !
事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。
事务是恢复和并发控制的基本单位。
事务应该具有4个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为ACID特性。
原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
我为什么要使用事务? 俺这里再举个很俗很俗的例子:
俺到银行存钱,于是有这么几个步骤:
1、把钱交给工作人员;2、工作人员填单;3、将单子给我签字;4、工作人员确认并输入电脑。
要是,要是我把钱交给工作人员之后,进行到3我签字了。那哥们突然心脏病发作,over掉了,那,我的钱还没有输入电脑,但我却交了钱又签字确认了,而并没有其他任何记录。我岂不是要亏死了???我的血汗钱啊!赶紧退给我!!
于是,在数据库里产生了这么一个术语:事务(Transaction),也就是要么成功,要么失败,并恢复原状。
还是写程序把:
Create Proc sp我去存款(@M Money , @iOperator Int)
As
Begin
Declare @i int
Begin Tran --激活事务
Exec @i=sp交钱 @m,@iOperator
if @i<>0 --这里一般用系统错误号 @@Error。 我这里为了举例子没有用到。需要根据实际情况。
begin
Rollback Tran --回滚事务
RaisError ('银行的窗口太少了,我懒得排队,不交了!:( ', 16, 1) with Log --记录日志
Return -1 --返回错误号
end
Exec @i=sp填单 @m,@iOperator
if @i<>0
begin
Rollback Tran --回滚事务
RaisError ('银行的哥们打印机出了点毛病,打印不出单子来,把钱退回来给我吧??', 16, 1) with Log
Return -2
end
Exec @i=sp签字 @m
if @i<>0
begin
Rollback Tran --回滚事务
RaisError ('我 靠?什么烂银行,换了3支笔都写不出水来!!老子不存了!!不签!', 16, 1) with Log
Return -3
end
Exec @i=sp输入电脑 @m,@iOperator
if @i<>0
begin
Rollback Tran --回滚事务
RaisError ('什么意思?磁盘空间已满?好了好了,把钱给我,我到旁边的这家银行!', 16, 1) with Log
Return -4
end
Commit Tran --提交事务
Return 0
End
----------------------------------------------------------------------
以上是伪代码,模拟我去存款的过程。
分享到:
相关推荐
什么叫事务,事务的特征是什么? 事务: 所谓事务,就是把多个事情按照一个事情来处理,在mysql中是用户定义的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的单位。例如,你去银行取钱,输密码、...
为什么叫事务脚本(Transaction scripts)呢?也就是实现一个功能,就直接写一个过程(方法),系统的业务就是分散在一个个这样的过程里。想一想,我们在业务层实现一个业务时,一般就是这么做的,要实现一个什么功能...
班级事务-班级事务系统-班级事务系统源码-班级事务管理系统-班级事务管理系统java代码-班级事务系统设计与实现-基于ssm的班级事务系统-基于Web的班级事务系统设计与实现-班级事务网站-班级事务网站代码-班级事务平台...
班级事务-班级事务系统-班级事务系统源码-班级事务管理系统-班级事务管理系统java代码-班级事务系统设计与实现-基于ssm的班级事务系统-基于Web的班级事务系统设计与实现-班级事务网站-班级事务网站代码-班级事务平台...
标题中的核心议题是关于Redis事务是否能够提供原子性支持,这与传统数据库的事务概念有所差异。描述中提到了在缓存场景下使用Redis事务的需求,即在批量存入Hash结构的数据时,需要同时为每个Key设置过期时间,以...
高校办公室行政事务-高校办公室行政事务系统-高校办公室行政事务系统源码-高校办公室行政事务管理系统-高校办公室行政事务管理系统java代码-高校办公室行政事务系统设计与实现-基于springboot的高校办公室行政事务...
高校办公室行政事务-高校办公室行政事务系统-高校办公室行政事务系统源码-高校办公室行政事务管理系统-高校办公室行政事务管理系统java代码-高校办公室行政事务系统设计与实现-基于springboot的高校办公室行政事务...
我们既要批量去放入缓存,又要保证每个key都加上过期时间(以防key永不过期),这时候事务操作是个比较好的选择为了确保连续多个操作的原子性,我们常用的数据库都会有事务的支持,Redis也不例外。但它又和关系型...
数据库处理的经典资料: 叫你处理事务 如何并发处理 瞧瞧吧 机不可失哟
演讲词也叫“演说词”、“演讲稿”,是用于演讲的文字稿本。其基本框架为:背景、环境、场合——演讲目的、指向的问题——解决的必要性、重要性——对策——感言、倡议、鼓动。 6. 答复 答复是在现行机关常用文...
班级事务系统代码 java班级事务系统代码 基于SSM的班级事务系统代码 1、班级事务系统的技术栈、环境、工具、软件: ① 系统环境:Windows/Mac ② 开发语言:Java ③ 框架:SSM ④ 架构:B/S、MVC ⑤ 开发环境:IDEA、...
高校办公室行政事务系统代码 java高校办公室行政事务系统代码 基于springboot的高校办公室行政事务系统代码 1、高校办公室行政事务系统的技术栈、环境、工具、软件: ① 系统环境:Windows/Mac ② 开发语言:Java ③...
相较而言,中国本土会计师事务所虽然在国内市场也有着一定的表现,但在国际市场上能够叫得响的品牌较为有限,多数品牌影响力仍局限于局部地区或特定业务领域,缺乏广泛的市场认可度和竞争力。 管理平台的差异也是国...
这种方式在分布式系统中被称为多主复制(Multi-Master Replication)或者叫作对等复制(Peer-to-Peer Replication),它允许多个节点独立地接受更新,并将这些更新传播到其他节点,这样可以显著减少同步延迟,提升...
班级事务系统代码 java班级事务系统代码 基于SSM的班级事务系统代码 1、班级事务系统的技术栈、环境、工具、软件: ① 系统环境:Windows/Mac ② 开发语言:Java ③ 框架:SSM ④ 架构:B/S、MVC ⑤ 开发环境:IDEA、...
高校办公室行政事务系统代码 java高校办公室行政事务系统代码 基于springboot的高校办公室行政事务系统代码 1、高校办公室行政事务系统的技术栈、环境、工具、软件: ① 系统环境:Windows/Mac ② 开发语言:Java ③...
aThinkThings是一个融合日程时间管理、待办事宜,清单列表的Todo软件,也叫思事记事本,用于记录畴划个人的工作、生活,包括:灵感、想法、事务、待办、简单信息... 如:灵感思想、待办事宜、日程计划、待购、项目,...
1. **个人基本信息**:面试者应清晰、简洁地介绍自己的姓名、年龄、毕业院校和专业,如范文中提到的“我叫 xxx,今年 xx 岁.毕业于 xxx 学院,专业是会计”。 2. **个人品质和能力**:强调个人的品质,例如“头脑灵活...
这份"MySQL讲义资料,包含事务部分"提供了全面的学习资源,帮助初学者和有经验的开发者深入理解MySQL的核心概念和功能。 首先,讲义的章节1 "尚硅谷_MySQL_SQL概述.pdf"介绍了SQL语言的基本概念,它是与MySQL交互的...
幸运的是,在我遇到困难的时候,不仅事务所的同事给予了我无私的帮助,特别是一位名叫张艳的同事,她对我的指导让我受益匪浅。通过张艳的帮助,以及自我不懈的努力和学习,我逐渐克服了这些难题,我的专业技能也得到...