--概要:SqlService常用语句[事务]

--设计者:DuanXuWen

--版本:0.1

--修改者:

--修改时间:

 

--Begin Transaction:标记事务开始。

--Commit Transaction:事务已经成功执行,数据已经处理妥当。

--Rollback Transaction:数据处理过程中出错,回滚到没有处理之前的数据状态,或回滚到事务内部的保存点。

--Save Transaction:事务内部设置的保存点,就是事务可以不全部回滚,只回滚到这里,保证事务内部不出错的前提下。

 

CREATE TABLE #table1

(

Id INT IDENTITY(1,1), --主键自增

Name VARCHAR(20),--名字

Age INT --年龄

)

 

--①事务---------------------------------------------

 

--开启事务

BEGIN TRAN

--错误机制

BEGIN TRY 

INSERT INTO #table1 VALUES(\'哈哈\',16)

INSERT INTO #table1 VALUES(\'嘻嘻\',\'出错\')

INSERT INTO #table1 VALUES(\'呵呵\',18)

END TRY

BEGIN CATCH

SELECT

Error_number() AS ErrorNumber,  --错误代码

Error_severity() AS ErrorSeverity,  --错误严重级别,级别小于10 try catch 捕获不到

Error_state() AS ErrorState ,  --错误状态码

Error_Procedure() AS ErrorProcedure , --出现错误的存储过程或触发器的名称。

Error_line() AS ErrorLine,  --发生错误的行号

Error_message() AS ErrorMessage  --错误的具体信息

IF(@@trancount>0) --全局变量@@trancount,事务开启此值+1,他用来判断是有开启事务

BEGIN

ROLLBACK TRAN  ---由于出错,这里回滚到开始,第一条语句也没有插入成功。

END

END CATCH

IF(@@trancount>0)

BEGIN

COMMIT TRAN  --如果成功#table1表中,将会有3条数据。

END

SELECT * FROM  #table1

 

--②事务[保存点]---------------------------------------------

 

--开启事务

BEGIN TRAN

--错误机制

BEGIN TRY 

INSERT INTO #table1 VALUES(\'哈哈\',16)

--保存点

SAVE TRAN onesucceeds

INSERT INTO #table1 VALUES(\'嘻嘻\',17)

INSERT INTO #table1 VALUES(\'呵呵\',18)

END TRY

BEGIN CATCH

SELECT

Error_number() AS ErrorNumber,  --错误代码

Error_severity() AS ErrorSeverity,  --错误严重级别,级别小于10 try catch 捕获不到

Error_state() AS ErrorState ,  --错误状态码

Error_Procedure() AS ErrorProcedure , --出现错误的存储过程或触发器的名称。

Error_line() AS ErrorLine,  --发生错误的行号

Error_message() AS ErrorMessage  --错误的具体信息

IF(@@trancount>0) --全局变量@@trancount,事务开启此值+1,他用来判断是有开启事务

BEGIN

ROLLBACK TRAN  ---由于出错,这里回滚到开始,第一条语句也没有插入成功。

END

END CATCH

IF(@@trancount>0)

BEGIN

ROLLBACK TRAN  onesucceeds--#table1表中,将会有1条数据。

END

SELECT * FROM  #table1

 

收藏 打印