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中加入一個專門記錄異常的表,以便產於異常發生的時間和確定報異常的存儲過程的名稱。
沒有留言:
張貼留言