系統又出現,使用者的錢給多扣了,庫存莫名給多了幾個。
進銷存出現的問題還是比交多的,看了很長時間都沒有找到解決辦法,
依稀記得之前去面試的時候面試官問到過我回滾的問題,當時沒有回答好,回想常去面試一下也好。
今天去學習了一下資料庫事務的一些知識。(總結一下)
乙個簡單的例子。
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語句的時候,資料庫自己幫助我們開啟乙個事務,當語句執行成功,資料庫自動提交事務,執行失敗,資料庫自動回滾事務 這也是我們常用到的。
insertinto 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 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為乙個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程式更加可靠。乙個邏輯工作單元要成...