資料庫事務(database transaction)是指作為單個邏輯工作單元執行的一系列操作,要麼完整地執行,要麼完全地不執行。 正常的情況下,這些操作將順利進行,最終交易成功,與交易相關的所有資料庫資訊也成功地更新。
為什麼需要資料庫事務?
好比生活轉賬,轉賬是生活中常見的操作,從a賬戶轉賬100元到b賬號。站在使用者角度而言,這是乙個邏輯上的單一操作,然而在資料庫系統中,至少會分成兩個步驟來完成:
1.將a賬戶的金額減少100元
2.將b賬戶的金額增加100元。
當這兩個操作同時完成,就是我們事務的實現
例項:(實現小楊給小崔轉賬100)
–開始事務
begin transaction tran_charge–定義變數記錄錯誤數量
declare @err_nums int此時可以得到set @err_nums=0
begin try
update customers set remain=remain-100 where id=3 set @err_nums=@err_nums+@@error
update customers set remain=remain+100 where id=4 set @err_nums=@err_nums+@@error
end try
begin catch
print 『錯誤編號:』+convert(varchar,error_number())+『錯誤』+error_message() set @err_nums=@err_nums+1
end catch
if(@err_nums>0)
rollback transaction tran_charge --回滾事務
else
commit transaction tran_charge --提交事務
MySQL事務(一)認識事務
簡單來說,事務就是要保證一組資料庫操作,要麼全部完成,要麼全部失敗。資料庫中的資料是共享資源,因此資料庫系統通常要支援多個使用者的或不同應用程式的訪問,會出現併發訪問資料的現象。資料庫系統必須對這種併發操作提供一種相應的處理機制來保證,訪問彼此之間不受任何干擾,從而保證資料庫的正確性不受到破壞,這種...
學習事務筆記
事務 transaction 其實指的一組操作,裡面包含許多個單一的邏輯。只要有乙個邏輯沒有執行成功,那麼都算失敗。所有的資料都回歸到最初的狀態 回滾 為什麼要有事務?為了確保邏輯的成功。例子 銀行的轉賬。指的是 事務中包含的邏輯,不可分割。指的是 事務執行前後。資料完整性 指的是 事務在執行期間不...
事務 學習筆記
講解事務前我們先來看一張圖 這張圖講述了資料庫的隔離級別和預防髒讀 不可重複讀,幻讀的對應關係。那麼mysql 預設的資料庫隔離級別是repeatable read 這個級別下就不會出現髒讀和不可重複讀。而oracle和sqlserver 的預設隔離級別是 read committed 這種級別不會...