Sqlserver 存储过程中结合事务的代码

 更新时间:2010年06月13日 00:59:56   作者:  
Sqlserver 存储过程中使用事务
复制代码 代码如下:

--方式一
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[USP_ProcedureWithTransaction_Demo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[USP_ProcedureWithTransaction_Demo]
GO
-- =============================================
-- Author: <ChengXiaoming>
-- Create date: <2010-06-11>
-- Description: <Demo:存储过程中使用事务>
-- =============================================
Create PROCEDURE [dbo].[USP_ProcedureWithTransaction_Demo]
As
Begin
SET XACT_ABORT ON
Begin Transaction
Insert Into Lock(LockTypeID) Values('A')--此语句将出错,LockTypeID为Int类型
Update Lock Set LockTypeID = 2 Where LockID = 32
Commit Transaction
SET XACT_ABORT OFF
End
GO

--方式二
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[USP_ProcedureWithTransaction_Demo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[USP_ProcedureWithTransaction_Demo]
GO
-- =============================================
-- Author: <ChengXiaoming>
-- Create date: <2010-06-11>
-- Description: <Demo:存储过程中使用事务>
-- =============================================
Create PROCEDURE [dbo].[USP_ProcedureWithTransaction_Demo]
As
Begin
Begin Transaction
Insert Into Lock(LockTypeID) Values('A')--此语句将出错,LockTypeID为Int类型
Update Lock Set LockTypeID = 1 Where LockID = 32
Commit Transaction
If(@@ERROR <> 0)
Rollback Transaction
End
GO

--方式三
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[USP_ProcedureWithTransaction_Demo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[USP_ProcedureWithTransaction_Demo]
GO
-- =============================================
-- Author: <ChengXiaoming>
-- Create date: <2010-06-11>
-- Description: <Demo:存储过程中使用事务>
-- =============================================
Create PROCEDURE [dbo].[USP_ProcedureWithTransaction_Demo]
As
Begin
Begin Try
Begin Transaction
Update Lock Set LockTypeID = 1 Where LockID = 32--此语句将出错,LockTypeID为Int类型
Insert Into Lock(LockTypeID) Values('A')
Commit Transaction
End Try
Begin Catch
Rollback Transaction
End Catch
End
GO

Exec [USP_ProcedureWithTransaction_Demo]

相关文章

  • SQL Server 查询死锁及解决死锁的基本知识(最新整理)

    SQL Server 查询死锁及解决死锁的基本知识(最新整理)

    在 SQL Server 中,死锁是指两个或多个进程互相等待对方持有的资源,从而无法继续执行的现象,这篇文章主要介绍了SQL Server 查询死锁以及解决死锁的基本知识,需要的朋友可以参考下
    2024-07-07
  • 关于数据库优化问题收集汇总

    关于数据库优化问题收集汇总

    笔者在工作实践中发现,不良的SQL往往来自于不恰当的索引设计、不充份的连接条件和不可优化的where子句。以下就对数据库优化问题进行了介绍,需要的朋友可以参考下
    2013-07-07
  • SQL 多条件查询几种实现方法详细介绍

    SQL 多条件查询几种实现方法详细介绍

    这篇文章主要介绍了SQL 多条件查询两种实现方法详细介绍的相关资料,一种是排列结合,另一种是动态拼接SQL,需要的朋友可以参考下
    2016-12-12
  • Android实现矩形区域截屏的方法

    Android实现矩形区域截屏的方法

    对屏幕进行截屏并裁剪有两种方式:早截图和晚截图,对于早截图和晚截图的概念大家通过本文详解学习。本文重点给大家介绍android实现矩形区域截屏的方法,需要的朋友参考下
    2017-01-01
  • SQLSERVER 的 truncate 和 delete 区别解析

    SQLSERVER 的 truncate 和 delete 区别解析

    在面试中我相信有很多朋友会被问到 truncate 和 delete 有什么区别,接下来通过本文给大家普及下SQLSERVER 的 truncate 和 delete 有区别,需要的朋友可以参考下
    2023-02-02
  • windows sql server如何彻底卸载干净

    windows sql server如何彻底卸载干净

    很多人在面对SQL Server出现的一些无法解决的问题时,会选择卸载重装,但是SQL Server卸载不干净的话,后续安装过程会出现很多问题,下面这篇文章主要给大家介绍了关于windows sql server如何彻底卸载干净的相关资料,需要的朋友可以参考下
    2022-10-10
  • SqlServer实现类似Oracle的before触发器示例

    SqlServer实现类似Oracle的before触发器示例

    本节主要介绍了SqlServer如何实现类似Oracle的before触发器,需要的朋友可以参考下
    2014-08-08
  • SQL Server的彻底卸载与再次安装方式

    SQL Server的彻底卸载与再次安装方式

    这篇文章主要介绍了SQL Server的彻底卸载与再次安装方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • SQL server插入报错:当 IDENTITY_INSERT 设置为 OFF 时不能为表 ‘XXX‘ 中的标识列插入显式值的问题解决

    SQL server插入报错:当 IDENTITY_INSERT 设置为 OFF 时不能为表 ‘XXX‘ 

    这篇文章主要介绍了SQL server插入报错:当 IDENTITY_INSERT 设置为 OFF 时,不能为表 ‘XXX‘ 中的标识列插入显式值的问题,该问题是给SQL server数据库中的某个表插入数据引起的报错,一般出现在该表为自增的情况下,本文给大家分享解决方法,需要的朋友可以参考下
    2023-09-09
  • SQL语句分组获取记录的第一条数据的方法

    SQL语句分组获取记录的第一条数据的方法

    SQL语句分组获取记录的第一条数据的方法,使用Northwind 数据库为例子
    2012-07-07

最新评论