SQL事務(wù)用法begin tran,commit tran和rollback tran的用法
-- =============================================
-- Author: cynimoon
-- Create date: 2009-10-09
-- Description: 示例存儲(chǔ)過(guò)程
-- =============================================
-- 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)識(shí)值
, @B_Name
, @B_Remark )
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
INSERT INTO [dbo].[ErrorLog]
( [EL_Procedure] -- 異常存儲(chǔ)過(guò)程名稱
, [EL_OperateTime] ) -- 報(bào)異常時(shí)間
VALUES
( 'TEST_PROC'
, CONVERT(DATETIME,GETDATE(),20) )
END CATCH
注:1. @@IDENTITY的作用是返回最后插入的標(biāo)識(shí)值。
2. 我在rollback tran中加入一個(gè)專門記錄異常的表,以便產(chǎn)于異常發(fā)生的時(shí)間和確定報(bào)異常的存儲(chǔ)過(guò)程的名稱。
原文鏈接:
begin tran 可以理解成新建一個(gè)還原點(diǎn)。
commit tran提交這個(gè)自begin tran開(kāi)始的修改
rollback tran 表示還原到上個(gè)還原點(diǎn)。
相關(guān)文章
SQL Server誤區(qū)30日談 第6天 有關(guān)NULL位圖的三個(gè)誤區(qū)
NULL位圖是為了確定行中的哪一列是NULL值,哪一列不是。這樣做的目的是當(dāng)Select語(yǔ)句后包含存在NULL值的列時(shí),避免了存儲(chǔ)引擎去讀所有的行來(lái)查看是否是NULL,從而提升了性能2013-01-01
SQLServer日志清空語(yǔ)句(sql2000,sql2005,sql2008)
時(shí)候當(dāng)系統(tǒng)運(yùn)行時(shí)間比較長(zhǎng)的時(shí)候,我們把備份的數(shù)據(jù)庫(kù)還原的時(shí)候發(fā)現(xiàn),數(shù)據(jù)庫(kù)中數(shù)據(jù)文件和日志文件變的好大,特別是日志文件?,F(xiàn)在給大家介紹如何清理SQLServer數(shù)據(jù)庫(kù)日志2013-05-05
SQLServer行列互轉(zhuǎn)實(shí)現(xiàn)思路(聚合函數(shù))
這篇文章主要為大家詳細(xì)介紹了SQLServer行列互轉(zhuǎn)實(shí)現(xiàn)思路,使用聚合函數(shù)pivot/unpivot實(shí)現(xiàn)行列互轉(zhuǎn),感興趣的小伙伴們可以參考一下2016-03-03
將表數(shù)據(jù)生成Insert腳本 比較好用的生成插入語(yǔ)句的SQL腳本
比較好用的生成插入語(yǔ)句的SQL腳本 將表數(shù)據(jù)生成Insert腳本2010-05-05
數(shù)據(jù)庫(kù)觸發(fā)器DB2和SqlServer有哪些區(qū)別
大部分?jǐn)?shù)據(jù)庫(kù)語(yǔ)句的基本語(yǔ)法是相同的,但具體到的每一種數(shù)據(jù)庫(kù),又有些不一樣,例如觸發(fā)器,DB2和SQL Server兩種很大的不同。對(duì)數(shù)據(jù)庫(kù)觸發(fā)器DB2和SqlServer有哪些區(qū)別感興趣的朋友一起看看本文吧2015-11-11
SQL Server查看login所授予的具體權(quán)限問(wèn)題
在SQL Server數(shù)據(jù)庫(kù)中如何查看一個(gè)登錄名(login)的具體權(quán)限呢,下面腳本之家小編給大家?guī)?lái)了SQL Server查看login所授予的具體權(quán)限問(wèn)題,感興趣的朋友一起看看吧2019-09-09
SQLSERVER分頁(yè)查詢關(guān)于使用Top方式和row_number()解析函數(shù)的不同
這篇文章主要介紹了SQLSERVER分頁(yè)查詢關(guān)于使用Top方式和row_number()解析函數(shù)的不同的相關(guān)資料,需要的朋友可以參考下2016-02-02
解決MSSQL2005遠(yuǎn)程連接sql2000非默認(rèn)端口數(shù)據(jù)庫(kù)的問(wèn)題
MSSQL2005連接sql2000非默認(rèn)端口數(shù)據(jù)庫(kù)的問(wèn)題給我折騰了快一天了,快瘋了,連接TCP/IP默認(rèn)1433端口沒(méi)問(wèn)題,連接其他端口數(shù)據(jù)庫(kù)問(wèn)題有了。2007-11-11
用戶"sa"登陸失敗 SQLServer 錯(cuò)誤18456的解決方法
sqlserver下用sa登錄提示18456錯(cuò)誤的解決方法。2009-11-11

