SQL Server 事务示例

原创 2018年02月10日 17:23:26

事务机制:

1.四个属性

    原子性Atomicity,一致性Consistency,隔离性Isolation,持久性Durability ,即ACID特性。

2.事务的状态

活动状态(初始状态),
部分提交状态(事务执行完最后一条语句,实际输出可能临时驻留在内存中),
提交状态(当数据库系统将事务中对数据的梗概完全写入磁盘时,写入事务日子一条信息),
失败状态(事务不能正常执行,回滚),
终止状态(事务已回滚并且数据库已被恢复到事务开始执行前的状态)。

3.事务与日志文件

日志文件是一个纪录数据库最新历史的文件,SQL Server会在系统恢复时使用日志文件(*.LDF)。
三个重要的名词:ROLLBACK,SAVEPOINT,COMMIT。

ROLLBACK是当系统发生错误的时候,将部分完成的事务解除作用的功能够呢,它可以将一个事务恢复到某个SAVEPOINT或者十五开始时的状态。

SAVEPOINT是一个位置定义器,我们可以在一个十五内定义SAVEPOINT,当系统发生错误是将事务恢复至某个SAVEPOINT。

COMMIT是一个保存动作,它会将事务内所有对数据库的更新保存到磁盘上。COMMIT可以保证所有的改变将成为数据库的永久的一部分,而且会释放事务所使用的资源,例如:锁定机制(Lock)。

4.事务的定义

事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。
通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。
在sql server+ .net 开发环境下,有两种方法能够完成事务的操作,保持数据库的数据完整性;
一个就是用sql存储过程,另一个就是在ADO.NET中一种简单的事务处理;
现在通过一个典型的银行转账的例子来说明一下这两个例子的用法
我们先来看看sql存储过程是如何来完成事务的操作的:

5.创建数据表;ID表示账户,Moneys表示账户余额

Create table USERMONEY(
ID INT NOT NULL PRIMARY KEY,
MONEYS MONEY
)

INSERT INTO USERMONEY VALUES(1,2000)
INSERT INTO USERMONEY VALUES(2,2000)

6.创建存储过程用来转钱

CREATE PROCEDURE COMMONEY
@tOID INT ,
@fromID INT,
@moneys MONEY,
@rel BIT OUTPUT
AS
BEGIN TRAN --开始事务

--执行第一个操作,转账出钱,减去转出的金额
UPDATE USERMONEY SET MONEYS=MONEYS-@moneys WHERE ID =@fromID
--执行第二个操作,转账入账,加上转入的金额
UPDATE USERMONEY SET MONEYS=MONEYS+@moneys WHERE ID=@tOID

--判断如果两条语句有任何一条出现错误
IF @@ERROR<>0
--开始执行事务回滚,恢复到转账开始之前的状态
BEGIN ROLLBACK TRAN

SET @REL= 0
END
ELSE
--如果两句都执行成功,执行执行事务
BEGIN COMMIT TRAN
SET @REL= 1
END

7.执行存储过程

DECLARE @REL BIT
EXEC COMMONEY 2,1,500, @REL OUTPUT
SELECT @REL
版权声明:本文为博主原创文章,未经博主允许不得转载。

sql server 事务示例

以前数据库操作,我是很少用事务的,最近做一个项目,发现偶尔总是少一些数据没有写入到数据库,也没有报错误,看了半天,也不知道是什么原因,后来把一条insert语句分成两条写,就好了,数据就没有丢失了,怀...
  • baolei1981
  • baolei1981
  • 2008年10月09日 14:43
  • 1548

SQL server 事务介绍,创建与使用

事务(Transaction) 事务是一种机制,一个操作序列,包含一组操作指令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求(即要么全部执行,要么全部不执行) ------------...
  • miniduhua
  • miniduhua
  • 2016年08月03日 11:39
  • 3848

SQL Server事务操作(C#)

事务是指用户定义的一个数据库操作序列,这些操作要么全做要么全不做,它是一个不可分割的工作单位。一个事务可以是一条SQL语句,一组SQL语句,或整个程序。 例子程序: public bool t...
  • softimite_zifeng
  • softimite_zifeng
  • 2016年11月09日 11:03
  • 1366

sql server 事务处理例子

begin tran one_tran declare @sum_errors int;   //声明error总数,这个用来判断事务是否回滚 set @sum_errors = 0; update ...
  • runing22
  • runing22
  • 2016年04月08日 14:52
  • 240

SQL Server事务、隔离级别详解(二十九)

前言 事务一直以来是我最薄弱的环节,也是我打算重新学习SQL Server的出发点,关于SQL Server中事务将分为几节来进行阐述,Always to review the basics。  ...
  • muzili12a3
  • muzili12a3
  • 2017年01月30日 10:18
  • 585

SqlServer事务语法及使用方法

事务是关于原子性的。原子性的概念是指可以把一些事情当做一个不可分割的单元来看待。从数据库的角度看,它是指应全部执行或全部不执行的一条或多条语句的最小组合。...
  • xiaouncle
  • xiaouncle
  • 2016年10月22日 16:22
  • 17040

浅谈sqlserver中的事务和锁

昨日“拜读”《sqlserver2005高级程序设计》和《SQL Server 2008编程入门经典(第3版)》这两本翻译后的中文版书籍。竟然发现目录结构大致一样,其讲解的内容几乎差不多。有抄袭的...
  • dinglang_2009
  • dinglang_2009
  • 2012年01月16日 10:09
  • 4854

SQLServer 存储过程 带事务处理实例(四)

CREATE procedure [dbo].******* ( @smallOrderNo varchar(50), @phoneModel varchar(50), @beginBoxNo ...
  • xie_xiansheng
  • xie_xiansheng
  • 2017年03月07日 14:01
  • 2156

SQL Server2008 事务和锁详解

今天主要讲下锁,但是说到锁肯定就是要说到事务。 说到事务就要说下它的三个特性: 自动性,一致性,独立性,持久性。 事务的分类:自动提交事务,显式事务,隐式事务,批处理级事务。 在这里...
  • ycl295644
  • ycl295644
  • 2015年06月02日 15:13
  • 1960

SQL SERVER 找出长时间运行的事务

前言: 事务是OLTP系统中的主要部分。它管理数据一致性和数据并发问题,当多个资源同时被读取或者修改相同数据时,SQLServer会通过锁定机制来确保数据库中的数据总是处于一个有效状态。在SQL...
  • YABIGNSHI
  • YABIGNSHI
  • 2014年04月24日 13:54
  • 1950
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL Server 事务示例
举报原因:
原因补充:

(最多只允许输入30个字)