SQL Server事务回滚对自增键的影响
SQL Server事務回滾時是刪除原先插入導致的自增值,也就是回滾之前你你插入一條數據導致自增鍵加1,回滾之后還是加1的狀態
?
--如果獲取當前操作最后插入的identity列的值:
select?@@IDENTITY
--如果要獲取某表的最后的identity列的值:
select?IDENT_CURRENT('表名')
--如果要模擬拋出異常可以用RAISERROR?
--RAISERROR('錯誤的描述',錯誤的嚴重級別代碼,錯誤的標識,錯誤的描述中的參數的值(這個可以是多個),一些其它參數)
--PRINT '出現異常,錯誤編號:' + convert(varchar,error_number()) + ',錯誤消息:' + error_message()
BEGIN TRAN Tran_Test;--開始事務
DECLARE @tran_error INT;
SET @tran_error = 0;
BEGIN TRY
INSERT INTO Table
RAISERROR ('引用單據已被修改,操作失敗!', 16, 1);
END TRY
BEGIN CATCH
PRINT '出現異常,錯誤編號:' + CONVERT(VARCHAR, ERROR_NUMBER()) + ',錯誤消息:'
+ ERROR_MESSAGE();
SET @tran_error = @tran_error + 1;
END CATCH;
IF ( @tran_error > 0 )
BEGIN
--執行出錯,回滾事務
ROLLBACK TRAN;
PRINT '!';
END;
ELSE
BEGIN
--沒有異常,提交事務
COMMIT TRAN;
PRINT '!';
END;
SELECT SCOPE_IDENTITY();
SELECT @@IDENTITY;
轉載于:https://www.cnblogs.com/wangboke/p/11059647.html
總結
以上是生活随笔為你收集整理的SQL Server事务回滚对自增键的影响的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一觉醒来,没有购房资格了!
- 下一篇: 如何用 IDEA 提升十倍开发效率?