資料庫事務 學習筆記

2022-01-13 06:22:52 字數 1598 閱讀 9221

系統又出現,使用者的錢給多扣了,庫存莫名給多了幾個。   

進銷存出現的問題還是比交多的,看了很長時間都沒有找到解決辦法,

依稀記得之前去面試的時候面試官問到過我回滾的問題,當時沒有回答好,回想常去面試一下也好。

今天去學習了一下資料庫事務的一些知識。(總結一下)

乙個簡單的例子。

1

--通過事務執行轉賬 約束是金額不能小於10,所以當小於10 的時候就會出錯。才能進入事務

2begin

transaction

3declare

@sum

int=04

update bank set balance = balance+

10where cld =

'0001'5

set@sum

=@sum

+@@error

6update bank set balance = balance-

10where cld =

'0002'7

set@sum

=@sum

+@@error8--

只要有乙個sql 有錯sum 就一定不是零,只要是sum不是零那就直接回滾, 9if

@sum

<>010

begin

11--

表示程式執行出錯 --回滾

12rollback

13end

14else

15begin

16--

如果沒有出錯,則提交該事務

17commit

18end

19

-- 當執行一條sql語句的時候,資料庫自己幫助我們開啟乙個事務,當語句執行成功,資料庫自動提交事務,執行失敗,資料庫自動回滾事務  這也是我們常用到的。

insert

into bbbb values (fsd)

每次執行以下sql的時候,資料庫自動幫我們提交乙個事務,但是要我們手動提交,或者回滾

set implicit_transactions 隱式事務 

1

--開啟隱式事務

2set implicit_transactions on

3insert

into bank values ('

0004

',1000000)4

commit

--直不返回,資料庫一直是鎖這的。

5set implicit_transactions off

--關閉隱式事務

6select

*from bank

需要手動開啟事務,手動開啟事務,手動提交事務或者回滾事務。

--

需要手動開啟事務,手動開啟事務,手動提交事務或者回滾事務。

begin

tran

--....

commit

tran

--rollback

transaction

特別感謝:傳智部落格和b站 能是我在 這個**  點選看鏈結 下學習到以上內容。  

一些概念   資料庫事務的總結

資料庫 mysql學習筆記4之事務

自動提交?autocommit 1 手動提交?commit 事務回滾?rollback?begin 或者 start transaction a 原子性 事務是最小的單位,不可再分割。c 一致性 事務的基本要求,乙個事務執行之前和執行之後都必須處於一致性狀態。i 隔離性 當多個使用者併發訪問資料庫時...

資料庫事務

事件是訪問並可能更新各種資料項的乙個程式執行單元。事件由事務開始與事務結束之間執行的全體操作組成。為了保證資料完整性,資料庫系統需要維護事務的以下性質 原子性 atomicity 事務中的操作要麼全部成功,要麼全部失敗。一致性 consistency 事務執行前後要保持資料庫的一致性。隔離性 iso...

資料庫 事務

資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為乙個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程式更加可靠。乙個邏輯工作單元要成...