SQL Server 事務簡單使用

2021-07-25 08:17:24 字數 3222 閱讀 5477

首先關於事務的幾個操作如下:

begin tran      -- 開啟事務

commit tran -- 提交事務

rollback tran -- 回滾事務

-- 新建乙個測試表demo,id自增

set xact_abort on   -- 設定當執行發生錯誤時,整個事務終止並回滾

begin tran -- 開啟事務

insert

into demo values (5)

insert

into demo values (2)

insert

into demo values (5)

insert

into demo values (null)

insert

into demo values (6)

commit tran -- 提交事務

go

當執行到insert into demo values (null)這一句時會發生錯誤,因為設定了set xact_abort on,因此所有操作會回滾。

操作結果:

再看一下資料

跟剛剛一樣,資料沒有增加。

接下來對比一下不設定xact_abort on的情況。

set xact_abort off

begin tran -- 開啟事務

insert

into demo values (5)

insert

into demo values (2)

insert

into demo values (5)

insert

into demo values (null)

insert

into demo values (6)

commit tran -- 提交事務

資料:

select * from demo

可以看到除了insert into demo values (null)這一句,其他資料是有插到資料庫的。

注意:

關於事務回滾還有一點,我建的demo表的id欄位是自增的。

看最後的那張圖,id=2的下一條是id=7,這說明了其實除了insert into demo values (null)這一句,其他語句是已經執行了,插入到資料庫了的,只是因為遇到錯誤回滾時又把它們刪除了。所以再插入的時候id就是從7開始了。

ps:其實不使用set xact_abort on也可以手動捕捉錯誤進行回滾。

這裡只是簡單介紹一下。

在每個單獨的dml語句執行後,立即判斷執行狀態,並做相應處理。

begin

transaction

declare @errorsum int --定義區域性變數

set @errorsum=0 --初始化臨時變數

update bank set currentmoneycurrentmoney= currentmoney-1000

where customername='張三'

set @errorsum=@errorsum+@@error --累計是否有錯誤

update bank set currentmoneycurrentmoney= currentmoney+1000

where customername='李四'

set @errorsum=@errorsum+@@error --累計是否有錯誤

if @errorsum<>0 --如果有錯誤

begin

rollback

transaction

endelse

begin

commit

transaction

endgo

2. 可利用 try…catch 異常處理機制。

begin tran 

begin try

update statement 1 ...

delete statement 2 ...

endtry

begin catch

if @@trancount > 0

rollback tran

end catch

if @@trancount > 0

commit tran

go

參考:

乙個sql server資料庫事務的使用示例

sql server在儲存過程中編寫事務處理**的三種方法

Sql Server事務簡單用法

1 var constr server localhost database data user sa pwd 123456 2using var connection new sqlconnection constr 3 where stationnum 58365 and datetime 8....

SQL Server事務的使用

例如 在關聯式資料庫中,乙個事務可以是一條sql語句,一組sql語句或整個程式 事務是恢復和併發控制的基本單位。事務應該具有4個屬性 原子性 一致性 隔離性 永續性。這四個屬性通常稱為acid特性。原子性 atomicity 乙個事務是乙個不可分割的工作單位,事務中包括的操作要麼都做,要麼都不做。一...

SQLserver中事務的使用

一 有時候我們需要同時執行很多個sql操作,但是這些要執行的sql有一部分執行成功了,比如原本應該向幾個相互關聯的表中插入資料,但是只有其中乙個表的資料插入成功了,這時按照正常的邏輯,只要插入其中乙個表失敗了,那麼就應該撤銷已經成功了插入操作,這樣事務就派上用場了。二 事務的特性 1 原子性 事務是...