開發者學堂課程【JDBC資料庫開發進階:MySQL中的開啟和關閉事務】學習筆記,與課程緊密聯系,讓使用者快速學習知識。
課程位址: https://developer.aliyun.com/learning/course/32
MySQL中的開啟和關閉事務
目錄:
1.事務的四大特性:ACID
2.MySQL中的操作事務
3.jabc中操作事務
而在MySQL中該如何操作事務?
事務其實是有兩個端點的,分為事務的開始(start transaction)和結束(commit 表示送出事務或rollback 表示復原事務,事務執行失敗,回到原來的狀态)
接下來建立表!選擇mydb3,将以下程式執行:
為了友善示範事務,我們需要建立一一個account表:。
CREATE TABLE account('
id INT PRIMARY KEY AUTO_ INCREMENT,
NAME VARCHAR(30),
balance NUMERIC(10.2)
);
INSERT INTO account(NAME,balanse) VALUES('zs', 100000);
INSERT INTO account(NAME,balance) VALUES('Is', 10000);
INSERT INTO account(NAME, balane) VALUES('ww', 10000);
SELECT * FROM account;

首先事務主要包括:
接下來我們按照操作來做一次執行,打開執行的程式,
輸入mysql -uroot -p,輸入密碼然後進入,再選擇資料庫mudb3,再查詢一下資料庫中的表
再輸入show tables;又要選擇account表,故輸入select *front account;
先查詢一下資料庫中的表,就顯示以下
确認資料沒問題之後,就開始轉賬操作
首先使用transaction,輸入start transaction;表示事務開始了,接下來執行的所有操作就都在這個事務之内,直到出現commit或rollback
接下來,就開始執行update ,
輸入update account set balance=900 where name='zs';
這句話的作用就是更新張三的賬戶餘額,就是把張三減去100塊錢,結果張三的賬戶餘額就變成了900
之後我們再輸入update account set balance=1100 where name='ls';
查李四的賬戶餘額就變成了1100
但進行到這一步,此時的事務并未送出,而最後再輸入rollback,則事務就相當于沒有發生,就會復原到剛剛開始。
雖然整個操作進行完并沒有使得最後的結果發生變化,但并不證明操作沒有進行,因為每次操作後查找時都顯示了不一定的變化。由此我們應該明白事務可以復原并且可以送出!!
接下來,再重新進行一輪新的操作,輸入start transaction;
再更新資料update account set balance -balanc-100 where name=’zs’;
最後select *fron account;查詢表
而之後輸入update account set balance -balanc+100 where name=’ls’;将balance-100變成balance+100之後,zs變ls張三變成李四之後,再查詢表,執行成功就可以發現表的資料發生了改變
之後再輸入commit之後資料就無法在發生改變,且并不在復原。事務復原是復原到開始的時候,而輸入commit之後事務就已經結束了。無法再進行復原!!
如果要復原,隻能重新再開啟一個事務!!之後再輸入rollback。