MSSQL数据库事务处理
在日常应用中通常需要多人执行多表的操作,比如售票系统的售票功能,这时候就涉及到数据读取的一致性问题,好在MSSQL数据库也提供了事务处理功能,这里就简单的记下
语法:
Begin Tran
//事务处理语句
if判断
begin
{
RollBack tran
}
end
else
bein
Commit tran
end
注:事务的begin没有end来配对
下面以旅客购票来举例:Tickets表为车票余量表(id,remaining),剩余票数有一个约束不能小于0,UserTicket为旅客购票表(userid,quantity)
假设当前剩余的票数为2,有两个旅客A、B同时操作购票,A要两张,B要1张
A旅客购票语句:
Insert into UserITicket values ('A',2)
Update Tickets set(Remaining=remaining-2)
B旅客购票语句:
Insert into UserITicket values ('B',1)
Update Tickets set(Remaining=remaining-1)
显然B旅客更新车票余量表的时候会发生错误,提示与系统约束不一致问题,但是B旅客的购票记录会插入成功,这明显与现实不符。下面用事务来处理这个问题:
Declare @error int=0--声明一个变量来捕获错误
Begin tran--打开一个事务
--执行事务
Insert into UserITicket values ('B',1)
set @error=@error+@@error--捕获错误代码
Update Tickets set(Remaining=remaining-1)
set @error=@error+@@error
if(@error>0)--说明事务执行的时候发生了错误
begin
rollback tran--回滚事务,撤销之前的操作
end
else
begin
Commit tran--执行正常,确认之前的操作
end
MSSQL数据库事务处理的更多相关文章
- 一个防止误删MSSQL数据库的方法
一个防止误删MSSQL数据库的方法 环境:Windows2008 R2 .SQL 2012 今天发现一个有趣的现象,之前数据库服务器的其中几个数据库做过镜像,不过现在已经删除了,今天又要在那台服务器上 ...
- MSSQL数据库的一些基础知识
转几个关于MSSQL数据库基础的文章: sql server系统表详细说明 SQL Server中系统数据库介绍 SQL Server中的角色(服务器级别和数据库级别角色)
- MSSQL数据库中Text类型字段在PHP中被截断之解 (转)
在PHP中使用了MSSQL数据库,恰巧数据库中又使用了Text类型字段,于是问题产生了.每次从数据库中查询得到的数据总是被莫名的截断,一开始是以为我使用的PHP框架中对字符串的长度有所限制,后来发现这 ...
- Atitti 数据库事务处理 attilax总结
Atitti 数据库事务处理 attilax总结 1.1. 为什么要传递Connection?1 1.2. 两种事务处理方式,一种是编程式事务处理;一种是声明...2 1.3. 事务隔离级别 2 1. ...
- PHP访问MSSQL数据库(实例代码)
本例子只作为简单的引导,实现一个简单的查询: <!DOCTYPE HTML> <html lang="en-US"> <head> <t ...
- 十三、EnterpriseFrameWork框架核心类库之数据库操作(多数据库事务处理)
本章介绍框架中封装的数据库操作的一些功能,在实现的过程中费了不少心思,针对不同数据库的操作(SQLServer.Oracle.DB2)这方面还是比较简单的,用工厂模式就能很好解决,反而是在多数据库同时 ...
- C#(asp.net)备份还原mssql数据库代码【转】
采集自互联网,未验证..... 如果我们使用虚拟主机为网站空间,这时如果需要备份和还原msssql数据库是非常麻烦,如果在网站后台管理当中加入对msssql数据库的操纵,可以使我们对数据库的备份和还原 ...
- 如何判断MSSQL数据库磁盘出现了瓶颈
问大神石沫:如何判断MSSQL数据库磁盘出现了瓶颈? 石沫(A1):您好,您的问题非常好,SQL SERVER提供了很多关于I/O压力的性能计数器,请选择性能计算器PhysicalDisk(Logic ...
- MSSQL数据库迁移到Oracle
MSSQL数据库迁移到Oracle 最近要把一个MSSQL数据库迁移到Oracle上面,打算借助PowerDesigner这个软件来实现;今天简单研究一下这个软件的运用;把一步简单的操作步骤记录下来: ...
随机推荐
- HTML的高富帅
1,前端的内容(组成部分有以下三部分) HTML CSS JS 裸体的人 穿上好看的衣服 ...
- Semantic Parsing(语义分析) Knowledge base(知识图谱) 对用户的问题进行语义理解 信息检索方法
简单说一下所谓Knowledge base(知识图谱)有两条路走,一条是对用户的问题进行语义理解,一般用Semantic Parsing(语义分析),语义分析有很多种,比如有用CCG.DCS,也有用机 ...
- Expression Blend实例中文教程系列
Expression Blend实例中文教程系列 本系列文章均转载:银光中国 时间:2010-04-09 09:20责任编辑:银光中国网 点击:次 Expression Blend实例中文教程系列由C ...
- Iphone 启动图的尺寸
APP图标设置 - 取Images.xcassets中的AppIcon, 图标尺寸 29pt * 2x => 58 * 5829pt * 3x => 87 * 8740pt * 2x =& ...
- codeforces 688D D. Remainders Game(中国剩余定理)
题目链接: D. Remainders Game time limit per test 1 second memory limit per test 256 megabytes input stan ...
- luogu 3804 【模板】后缀自动机
学习一波后缀自动机 求字符串$S$的所有出现次数不为1的子串的出现次数乘上该子串长度的最大值 #include<iostream> #include<cstdio> #incl ...
- Python基础第九天
一.内容
- 我使用过的Linux命令之hexdump - ”十六“进制查看器(转载)
转载:http://codingstandards.iteye.com/blog/805778 本文链接:http://codingstandards.iteye.com/blog/805778 ...
- 【WIP】Objective-C Foundation框架的主要对象
创建: 2018/02/02 完成字符串: 2018/02/05 任务表: TODO 最新内容确认: 字符串,数据类, 数组类 可变与不变的对象 一览 种类 不变类 可变类 数组 NSA ...
- 不让浏览器缓存input的值
方法一: 在不想使用缓存的input中添加 autocomplete="off"eg: <input type="text" autocomplete=& ...