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中加入一個專門記錄異常的表,以便產于異常發生的時間和確定報異常的存儲過程的名稱。
原文鏈接:
begin tran 可以理解成新建一個還原點。
commit tran提交這個自begin tran開始的修改
rollback tran 表示還原到上個還原點。