2012年11月2日 星期五

Sql Server 中提供了begin tran,commit tran和rollback tran



Sql Server 中提供了begin tran,commit tran和rollback tran來使用事務。begin tran表示開始事務,    commit tran表示提交事務,rollback tran表示回滾事務。具體用法如下:
-- =============================================
--
--
--
-- =============================================
-- 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中加入一個專門記錄異常的表,以便產於異常發生的時間和確定報異常的存儲過程的名稱。

沒有留言:

張貼留言