begin tran,commit tran和rollback tran的用法

简介:
< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>

    Sql Server 2005/2008中提供了begin tran,commit tran和rollback tran来使用事务。begin tran表示开始事务,    commit tran表示提交事务,rollback tran表示回滚事物。具体用法如下:

-- =============================================
-- Author: cynimoon
-- Create date: 2009-10-09
-- Description: 示例存储过程
-- =============================================
-- EXEC TEST_PROC '文综','包括历史,地理,政治','政治','文综的一门'

CREATE PROCEDURE [dbo].[TEST_PROC]

@A_Name NVARCHAR(20),         -- A表姓名

@A_Remark NVARCHAR(4000), -- A表备注

@B_Name NVARCHAR(20),         -- B表姓名

@B_Remark NVARCHAR(4000) -- B表备注

AS

BEGIN TRY

     BEGIN TRAN

-- 在A表中插入数据

         INSERT INTO [dbo].[A]

              ( [A_Name]

               , [A_Remark] )

         VALUES

              ( @A_Name

              , @A_Remark )

-- 在B表中插入数据

         INSERT INTO [dbo].[B]

              ( [A_ID]

             , [B_Name]

             , [B_Remark] )

         VALUES

             ( @@IDENTITY              -- 返回最后插入的标识值

             , @B_Name

             , @B_Remark )

     COMMIT TRAN

END TRY

BEGIN CATCH

     ROLLBACK TRAN

          INSERT INTO [dbo].[ErrorLog]

              ( [EL_Procedure]            -- 异常存储过程名称

              , [EL_OperateTime] )      -- 报异常时间

          VALUES

              ( 'TEST_PROC'

             , CONVERT(DATETIME,GETDATE(),20) )

END CATCH

注:1. @@IDENTITY的作用是返回最后插入的标识值。

        2. 我在rollback tran中加入一个专门记录异常的表,以便产于异常发生的

本文转自 netcorner 博客园博客,原文链接: http://www.cnblogs.com/netcorner/archive/2009/10/17/2912057.html  ,如需转载请自行联系原作者

相关文章
|
4月前
|
SQL 关系型数据库 MySQL
MySQL数据库——事务操作-begin-commit-rollback
MySQL数据库——事务操作-begin-commit-rollback
38 1
|
缓存 Oracle 关系型数据库
Oracle中控制commit的三个参数 commit_write, commit_logging和 commit_wait
Oracle中控制commit的动作有三个参数 commit_write, commit_logging和 commit_wait,按重要性分别说明如下
265 0
|
Java Spring
【小家java】Spring事务嵌套引发的血案---Transaction rolled back because it has been marked as rollback-only(下)
【小家java】Spring事务嵌套引发的血案---Transaction rolled back because it has been marked as rollback-only(下)
【小家java】Spring事务嵌套引发的血案---Transaction rolled back because it has been marked as rollback-only(下)
|
存储 Oracle 关系型数据库
关于Oracle存储过程中是否需要写commit的问题
关于Oracle存储过程中是否需要写commit的问题
|
Java 对象存储 Spring
【小家java】Spring事务嵌套引发的血案---Transaction rolled back because it has been marked as rollback-only(上)
【小家java】Spring事务嵌套引发的血案---Transaction rolled back because it has been marked as rollback-only(上)
|
SQL Oracle 关系型数据库
DDL会产生两次commit操作
DDL操作为什么需要两次commit操作呢?
|
Oracle 关系型数据库 测试技术
[20180306]关于DEFERRED ROLLBACK.txt
[20180306]关于DEFERRED ROLLBACK.txt --//在oracle数据库存在一种特殊的ROLLBACK段,叫DEFERRED ROLLBACK.
1073 0
|
关系型数据库 Oracle Linux
[20180306]关于DEFERRED ROLLBACK2.txt
[20180306]关于DEFERRED ROLLBACK2.txt --//上午测试DEFERRED ROLLBACK针对表空间offline才有效,我测试回滚一定会写到DEFERRED ROLLBACK段.
989 0