SQL Server事務回滾對自增鍵的影響

2022-09-10 23:54:22 字數 1034 閱讀 5812

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;

SQL Server 事務及回滾事務

第一種 declare ierrorcount intset ierrorcount 0 begin tran tran1 insert into t1 id,c1 values 1 1 set ierrorcount ierrorcount error insert into t1 id,c1 v...

sql server儲存過程回滾事務

set nocount on這個很常用 作用 阻止在結果集中返回顯示受t sql語句或則usp影響的行計數資訊。當set oncount on時候,不返回計數,當set nocount off時候,返回計數 即使當set nocount on 時候,也更新 rowcount 當set nocount...

事務回滾與手動回滾

一般我們在開發時,在方法或者類上加了 transactional事務註解,然後會用 try catch 將可能會出問題的 塊包起來,在catch裡面處理捕獲的異常,但是,如果在catch裡面沒有把異常丟擲去,此時事務是不會自動回滾的 比如這種情況 這裡既沒有丟擲異常,也沒有手動回滾,在插入流水表之後...