SQL Server事务回滚对自增键的影响
SQL Server事務(wù)回滾時(shí)是刪除原先插入導(dǎo)致的自增值,也就是回滾之前你你插入一條數(shù)據(jù)導(dǎo)致自增鍵加1,回滾之后還是加1的狀態(tài)
?
--如果獲取當(dāng)前操作最后插入的identity列的值:
select?@@IDENTITY
--如果要獲取某表的最后的identity列的值:
select?IDENT_CURRENT('表名')
--如果要模擬拋出異常可以用RAISERROR?
--RAISERROR('錯(cuò)誤的描述',錯(cuò)誤的嚴(yán)重級(jí)別代碼,錯(cuò)誤的標(biāo)識(shí),錯(cuò)誤的描述中的參數(shù)的值(這個(gè)可以是多個(gè)),一些其它參數(shù))
--PRINT '出現(xiàn)異常,錯(cuò)誤編號(hào):' + convert(varchar,error_number()) + ',錯(cuò)誤消息:' + error_message()
BEGIN TRAN Tran_Test;--開始事務(wù)
DECLARE @tran_error INT;
SET @tran_error = 0;
BEGIN TRY
INSERT INTO Table
RAISERROR ('引用單據(jù)已被修改,操作失敗!', 16, 1);
END TRY
BEGIN CATCH
PRINT '出現(xiàn)異常,錯(cuò)誤編號(hào):' + CONVERT(VARCHAR, ERROR_NUMBER()) + ',錯(cuò)誤消息:'
+ ERROR_MESSAGE();
SET @tran_error = @tran_error + 1;
END CATCH;
IF ( @tran_error > 0 )
BEGIN
--執(zhí)行出錯(cuò),回滾事務(wù)
ROLLBACK TRAN;
PRINT '!';
END;
ELSE
BEGIN
--沒(méi)有異常,提交事務(wù)
COMMIT TRAN;
PRINT '!';
END;
SELECT SCOPE_IDENTITY();
SELECT @@IDENTITY;
轉(zhuǎn)載于:https://www.cnblogs.com/wangboke/p/11059647.html
總結(jié)
以上是生活随笔為你收集整理的SQL Server事务回滚对自增键的影响的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 一觉醒来,没有购房资格了!
- 下一篇: 传世的关系模型,巧夺天工的分布式数据库设