**
第一種:
declare @ierrorcount int
set @ierrorcount = 0
begin tran tran1
insert into t1(id, c1) values(1,'1')
set @ierrorcount=@ierrorcount+@@error
insert into t1(id, c1) values('xx2','2')
set @ierrorcount=@ierrorcount+@@error
if @ierrorcount=0
begin
commit tran tran1 --執行事務
end
else
begin
rollback tran tran1 --回滾事務
end第二種:
begin try
begin tran tran1
insert into t1(id, c1) values(1,'1')
insert into t1(id, c1) values('xx2','2') --此句產生錯誤
commit tran tran1
end try
begin catch
raiserror 50005n'出錯了'
rollback tran tran1 ---出錯後呼叫回滾
end catch
第三種:
set xact_abort on ----語句產生執行時錯誤,則整個事務將終止並回滾。
begin tran
insert into t1(id, c1) values(1,'1')
insert into t1(id, c1) values('xx2','2') --此句產生錯誤時,就會回滾整個事務
commit tran
MySQL 事物和事物回滾
原子性一致性隔離性永續性 事務應用 開啟事務 mysql begin mysql 一條或者多條sql命令 此時autocommint被禁用終止事務 mysql commit mysql rollback 注意 事務回滾只針對於表記錄的操作 增 刪 改有效 對建立庫 建立表的操作無效背景 你 建行卡 ...
事物回滾後修改狀態執行sql
1.乙個方法使用了事物,由於事物的特性,在執行事物回滾以後,方法內事物回滾以後的sql就不在執行了。如果想要執行以後的 必修先提交當前的事物狀態。手動執行事物回滾 如何在下面執行修改狀態?1.引入事物管理器 autowired private datasourcetransactionmanager...
Spring事物手動回滾
手動回滾 方法1 在service層方法的catch語句中增加 transactionaspectsupport.currenttransactionstatus setrollbackonly 語句,手動回滾,這樣上層就無需去處理異常 現在專案的做法 方法2 例如service層處理事務,那麼se...