mysql数据库事务_MySQL数据库的事务管理
小伙伴們不好意思,這兩天有事沒有及時的更新哈~希望小伙伴們見諒,那么開始我們今天的分享。
MySQL 數(shù)據(jù)庫的事務(wù)
我們之前分享數(shù)據(jù)庫的數(shù)據(jù)操作,無外乎對數(shù)據(jù)庫的數(shù)據(jù)進行增、刪、改、查。就比如我們?nèi)ベI東西,一般都是先付錢,賣家收到錢再發(fā)貨。這個用數(shù)據(jù)庫來表示就是,第一步:從用戶的賬戶中減去一部分金額。第二步,再把減去的金額添加到商家的賬戶上。
但是萬一遇到特殊的情況,你成功的完成了第一步,從用戶的數(shù)據(jù)庫中扣除了錢,這時候突然停電,系統(tǒng)出現(xiàn)了故障,沒有完成第二步。這就尷尬了,用戶的錢少了,商家也沒收到錢。
為了應(yīng)對這種情況的發(fā)生,數(shù)據(jù)庫就出現(xiàn)了一個功能事務(wù),事務(wù)就是一組由 SQL 語句組成的業(yè)務(wù)邏輯,當(dāng)事務(wù)內(nèi)的所有 SQL語句都成功的執(zhí)行,整個事務(wù)才算成功,否則就是失敗。失敗意味著整個的數(shù)據(jù)操作沒有意義,就要把數(shù)據(jù)恢復(fù)到執(zhí)行事務(wù)操作之前的狀態(tài)。
上面是關(guān)于事務(wù)的介紹,下面我們用具體的代碼演示一下:
SQL語句在執(zhí)行的過程中分為二個階段:
1 : 執(zhí)行SQL語句
2 : 將執(zhí)行結(jié)果提交給數(shù)據(jù)庫。
現(xiàn)在我們來演示一下:修改 id=3 的用戶的手機號碼,使之變成 123456
我們看見這個修改操作已經(jīng)完成了,我們來看一下事務(wù)默認的執(zhí)行方式。
show variables like 'autocommit';
事務(wù)默認的執(zhí)行方式:自動提交。SQL語句執(zhí)行完畢后,自動提交事務(wù)。
事務(wù)的功能演示
先來創(chuàng)建兩個表一個用戶表一個訂單表,寫入兩條數(shù)據(jù)。
查看一下表內(nèi)的數(shù)據(jù)。
現(xiàn)在我們來開啟事務(wù):start translation。
我們打開一個窗口,作為一個新的用戶,現(xiàn)在我們看見,數(shù)據(jù)是沒有變化的。也就是說,當(dāng)一個事務(wù)沒有完成的時候,用戶只能看到事務(wù)完成前,或者完成后的狀態(tài)。
現(xiàn)在我們的操作完成,來提交事務(wù)。commit
數(shù)據(jù)庫中的數(shù)據(jù)修改了,別的用戶查看數(shù)據(jù)庫的時候,也是修改后的數(shù)據(jù)。如果執(zhí)行的過程中發(fā)生錯誤呢?開啟事務(wù)。再來修改一下數(shù)據(jù)。
現(xiàn)在出錯了,事務(wù)進行回滾操作,rollback。
我們看到了,數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)到?jīng)]有修改之前的狀態(tài)。這就是我們今天要分享的 MySQL 數(shù)據(jù)庫的事務(wù)了。
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的mysql数据库事务_MySQL数据库的事务管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谷歌浏览器出现方格xp系统_win10系
- 下一篇: html如何调整背景图片大小_如何快速调