sql T_sql 在存储过程中使用事务Trans 例子

在这里我们主要是介绍SQL Server 中事务在存储过程中的应用,首先我们先来了解下什么是事务。

(1):事务(Transaction)事务是恢复和并发控制的基本单位。 是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。


(2):事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。
COMMIT表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。
ROLLBACK表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有以完成的操作全部撤消,滚回到事务开始的状态。

我们通过下面的例子来看看,它到底是怎么使用,以及使用它的好处。

①,我们准备一个数据库表

CREATE TABLE [dbo].[storeA](

    [Aid] [int] NULL,

    [Aname] [varchar](200) COLLATE Chinese_PRC_CI_AS NULL,

    [price] [float] NULL

) ON [PRIMARY]

 

表数据如下图所示:

 

 

②,我们来创建一个存储过程

 

create proc tt

as

begin

 

    Begin Try       

       Begin Transaction           

       Update dbo.storeA Set Aid = 7 Where Aname ='N73'   

       Update dbo.storeA Set Aid = 9 Where Aname ='N97'       

       Insert Into dbo.storeA(Aid) Values('sdfs')       --此语句将出错,LockTypeIDInt类型

       Update dbo.storeA Set Aid = 8 Where Aname ='N95'   

       Commit Transaction   

    End Try   

    Begin Catch       

       Rollback Transaction       

    End

    Catch

end

 

/*

当我们执行该存储过程 EXEC TT 之后,我们发现中间有一条插入的数据,是报错的,因为Aid字段类型是整型,

而我们插入的是字符串,由于事务的执行是要么都通过,要么都回滚,所以在事务中只要有出现错误,所以操作

都会被回滚,也就是说,我们里面执行的3个修改语句,都不会被修改到。

 

以上是事务的使用,对于高并发或者多步骤操作,使用事务可以保证数据的完整性,但需慎用,因为会影响性能。

 

下面是没有包含try catch 的事务,可以显示错误信息

*/

 

/*下面是没有包含try catch 的事务,可以显示错误信息*/

Create PROCEDURE [dbo].[tt2]

As

Begin

    Begin Transaction

        Update dbo.storeA Set Aid = 7 Where Aname ='N73'   

       Update dbo.storeA Set Aid = 9 Where Aname ='N97'       

       Insert Into dbo.storeA(Aid) Values('sdfs')       --此语句将出错,LockTypeIDInt类型

       Update dbo.storeA Set Aid = 8 Where Aname ='N95' 

    Commit Transaction

    If(@@ERROR <> 0)

        Rollback Transaction       

End

 

/*

exec tt2

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值