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这个软件来实现;今天简单研究一下这个软件的运用;把一步简单的操作步骤记录下来: ...
随机推荐
- apt-pkg
1 什么是apt-pkg python的apt库,可以做apt可以做的任何事情. 2 apt_pkg.parse_depends(depends, strip_multiarch=True) 这里的d ...
- linux进程编程入门
1.进程的创建与操作 任务描述: 在父进程中创建一个全局变量,一个局部变量,并赋予初始值,用fork函数创建子进程.在子进程中对父进程的变量进行自加操作,并且输出变量值,然后父进程睡眠一段时间 各进程 ...
- YTU 1004: 1、2、3、4、5...
1004: 1.2.3.4.5... 时间限制: 1000 Sec 内存限制: 64 MB 提交: 1275 解决: 343 题目描述 浙江工商大学校园里绿树成荫,环境非常舒适,因此也引来一批动物 ...
- 织梦dedecms将指定图片自动生成指定尺寸的小图、缩略图、图片的方法
对于普通企业网站来讲,织梦原来的程序只是提供了一个缩略图,但是这样对于一些相对来说图片会比较多的网站来说,图片太大当缩略图会导致网站整体的访问速度,所以我今天就来教你织梦把一张大图转换成生成一张小图或 ...
- 一步一步学Silverlight 2系列(1):创建一个基本的Silverlight应用
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- OpenMediaVault 搭建git,ssh无法连接问题
/************************************************************************* * OpenMediaVault 搭建git,ss ...
- 我的第一篇博文,Python+scrapy框架安装。
自己用Python脚本写爬虫有一段时日了,也抓了不少网页,有的网页信息两多,一个脚本用exe跑了两个多月,数据还在进行中.但是总觉得这样抓效率有点低,问题也是多多的,很早就知道了这个框架好用,今天终于 ...
- 【AHOI 2005】 约数研究
[题目链接] 点击打开链接 [算法] 要求M,显然可以通过约数个数定理从1..N暴力计算答案,然而n最大10^6,这个算法的时间复杂度是 O(N * sqrt(N))的,不能通过此题 因此我们换一种思 ...
- AutoIT: ControlCommand是一个非常重要的指令
ControlCommand可以确定窗口中的复选框是否选中状态,然后可以对这些复选框进行操作.可以对ComboBox和ListBox进行操作如选择下拉框的某个选项 if WinExists(" ...
- Linux设备模型 (3)
在上文中,我们介绍到如何使用default attribute.Default attribute使用很方便,但不够灵活.比如上篇文章在Kobject一节中提到的那个例子,name和val这两个att ...