SQL事務(wù)用法begin tran,commit tran和rollback tran的用法
更新時(shí)間:2011年12月20日 13:03:08 作者:
Sql Server 2005/2008中提供了begin tran,commit tran和rollback tran來使用事務(wù)。begin tran表示開始事務(wù), commit tran表示提交事務(wù),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表中插入數(shù)據(jù)
INSERT INTO [dbo].[A]
( [A_Name]
, [A_Remark] )
VALUES
( @A_Name
, @A_Remark )
-- 在B表中插入數(shù)據(jù)
INSERT INTO [dbo].[B]
( [A_ID]
, [B_Name]
, [B_Remark] )
VALUES
( @@IDENTITY -- 返回最后插入的標(biāo)識值
, @B_Name
, @B_Remark )
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
INSERT INTO [dbo].[ErrorLog]
( [EL_Procedure] -- 異常存儲過程名稱
, [EL_OperateTime] ) -- 報(bào)異常時(shí)間
VALUES
( 'TEST_PROC'
, CONVERT(DATETIME,GETDATE(),20) )
END CATCH
注:1. @@IDENTITY的作用是返回最后插入的標(biāo)識值。
2. 我在rollback tran中加入一個(gè)專門記錄異常的表,以便產(chǎn)于異常發(fā)生的時(shí)間和確定報(bào)異常的存儲過程的名稱。
原文鏈接:
begin tran 可以理解成新建一個(gè)還原點(diǎn)。
commit tran提交這個(gè)自begin tran開始的修改
rollback tran 表示還原到上個(gè)還原點(diǎn)。
復(fù)制代碼 代碼如下:
-- =============================================
-- 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表中插入數(shù)據(jù)
INSERT INTO [dbo].[A]
( [A_Name]
, [A_Remark] )
VALUES
( @A_Name
, @A_Remark )
-- 在B表中插入數(shù)據(jù)
INSERT INTO [dbo].[B]
( [A_ID]
, [B_Name]
, [B_Remark] )
VALUES
( @@IDENTITY -- 返回最后插入的標(biāo)識值
, @B_Name
, @B_Remark )
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
INSERT INTO [dbo].[ErrorLog]
( [EL_Procedure] -- 異常存儲過程名稱
, [EL_OperateTime] ) -- 報(bào)異常時(shí)間
VALUES
( 'TEST_PROC'
, CONVERT(DATETIME,GETDATE(),20) )
END CATCH
注:1. @@IDENTITY的作用是返回最后插入的標(biāo)識值。
2. 我在rollback tran中加入一個(gè)專門記錄異常的表,以便產(chǎn)于異常發(fā)生的時(shí)間和確定報(bào)異常的存儲過程的名稱。
原文鏈接:
begin tran 可以理解成新建一個(gè)還原點(diǎn)。
commit tran提交這個(gè)自begin tran開始的修改
rollback tran 表示還原到上個(gè)還原點(diǎn)。
相關(guān)文章
SQL 復(fù)合查詢條件(AND,OR,NOT)對NULL值的處理方法
在SQL的3值邏輯下,一個(gè)查詢條件可以產(chǎn)生以下三種情況:TRUE,FALSE,NULL。只有那些滿足WHERE子句的值是TRUE的記錄才出現(xiàn)在結(jié)果表中。2011-04-04SQL Server復(fù)制刪除發(fā)布時(shí)遇到錯(cuò)誤18752的問題及解決方法
朋友反饋他無法刪除一臺SQL Server數(shù)據(jù)庫上的發(fā)布,具體情況為刪除一個(gè)SQL Server Replication的發(fā)布時(shí),遇到這樣的錯(cuò)誤問題如何解決呢,下面小編給大家分享SQL Server復(fù)制刪除發(fā)布時(shí)遇到錯(cuò)誤18752的問題及解決方法,感興趣的朋友一起看看吧2024-01-01SQL Server實(shí)現(xiàn)將特定字符串拆分并進(jìn)行插入操作的方法
這篇文章主要介紹了SQL Server實(shí)現(xiàn)將特定字符串拆分并進(jìn)行插入操作的方法,涉及SQL Server的循環(huán)、遍歷、判定及插入等相關(guān)操作技巧,需要的朋友可以參考下2016-08-08SQL Server中對數(shù)據(jù)截取替換的方法詳解
本文主要介紹了SQL Server中對數(shù)據(jù)截取替換的方法。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-03-03Sql存儲過程游標(biāo)循環(huán)的用法及sql如何使用cursor寫一個(gè)簡單的循環(huán)
這篇文章主要介紹了循環(huán)和游標(biāo)在Sql存儲過程中使用及sql如何使用cursor寫一個(gè)簡單的循環(huán)的相關(guān)資料,需要的朋友可以參考下2015-11-11SQL對數(shù)據(jù)進(jìn)行按月統(tǒng)計(jì)或?qū)?shù)據(jù)進(jìn)行按星期統(tǒng)計(jì)的實(shí)例代碼
這篇文章主要介紹了SQL對數(shù)據(jù)進(jìn)行按月統(tǒng)計(jì)或?qū)?shù)據(jù)進(jìn)行按星期統(tǒng)計(jì)的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08