博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库事务
阅读量:5888 次
发布时间:2019-06-19

本文共 1190 字,大约阅读时间需要 3 分钟。

数据库事务(Database Transaction) 是指作为单个逻辑工作单元执行的一系列操作。

事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。

 

设想网上购物的一次交易,其付款过程至少包括以下几步数据库操作:

      更新客户所购商品的库存信息

保存客户付款信息--可能包括与银行系统的交互

生成订单并且保存到数据库中   · 更新用户相关信息,例如购物数量等等 正常的情况下,这些操作将顺利进行,最终交易成功,与交易相关的所有数据库信息也成功地更新。但是,如果在这一系列过程中任何一个环节出了差错,例如在更新商品库存信息时发生异常、该顾客银行帐户存款不足等,都将导致交易失败。一旦交易失败,数据库中所有信息都必须保持交易前的状态不变,比如最后一步更新用户信息时失败而导致交易失败,那么必须保证这笔失败的交易不影响数据库的状态--库存信息没有被更新、用户也没有付款,订单也没有生成。否则,数据库的信息将会一片混乱而不可预测。

数据库事务正是用来保证这种情况下交易的平稳性和可预测性的技术。

 

begin tran (或transaction)  --开始事务

commit                               --提交事务

rollback                               --回滚事务

事务特性:

A原子性(atomicity)

C一致性(consistency)

I隔离性(isolation)

D持久性(durability)

@@ERROR 是判断事务有没有错的条件,无错时值为0,有错时值不为0。

 

 

 

begin tran  --开始事务

insert into cangku values(10008,'Boxster',70,10,1004)--没有错

if @@ERROR >0

begin--每一个执行语句后面写这句话是为了如果上一句有错误,

--下面不管有多少执行语句,都不会执行,直接到tranrollback

       goto tranrollback--到最后一个执行语句的tranrollback

end

insert into cangku values(10002,'极光',66.50,10,1002)--主键约束

if @@ERROR>0

       goto tranrollback

insert into cangku values(10009,'XF',40,10,1003)--没有错

if @@ERROR>0

begin

       tranrollback:        --需要加上冒号

       rollback tran        --回滚所有事务中执行过的命令(撤销所有执行语句)

end

else

begin

       commit tran   --提交事务(只有真正的走到了commit才是真正的更改数据库的数据)

end

 

转载于:https://www.cnblogs.com/maxin991025-/p/6085139.html

你可能感兴趣的文章
zipkin相关材料
查看>>
head,tail读取文件数据行
查看>>
路由相关
查看>>
weblogic启动慢,停到log manager基本不动了
查看>>
bootstrap 框架学习笔记
查看>>
XP服务详解与建议
查看>>
如何利用CSS画个桃心
查看>>
我的友情链接
查看>>
第十八章、Linux网络配置
查看>>
Linux查看系统的负载
查看>>
linux下lvm逻辑卷和快照的命令详解
查看>>
linux nginx中网页乱码
查看>>
PCA 笔记
查看>>
Exchange 2010 系列学习-安装配置
查看>>
lftp手册
查看>>
移动端常见随屏幕滑动顶部固定导航栏背景色透明度变化简单jquery特效
查看>>
matlab-线性代数 判断 向量组的线性相关性
查看>>
ubuntu 12.04下搭建web服务器(MySQL+PHP+Apache) 教程
查看>>
消息队列的应用场景、为什么要用消息队列
查看>>
IDEA同时启动两个Web项目
查看>>