程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> SQL事務用法begin tran,commit tran和rollback tran的用法

SQL事務用法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 表示還原到上個還原點。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved