天天看點

MySQL中的開啟和關閉事務|學習筆記MySQL中的開啟和關閉事務

開發者學堂課程【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中的開啟和關閉事務|學習筆記MySQL中的開啟和關閉事務

首先事務主要包括:

接下來我們按照操作來做一次執行,打開執行的程式,

MySQL中的開啟和關閉事務|學習筆記MySQL中的開啟和關閉事務

輸入mysql -uroot -p,輸入密碼然後進入,再選擇資料庫mudb3,再查詢一下資料庫中的表

MySQL中的開啟和關閉事務|學習筆記MySQL中的開啟和關閉事務

再輸入show tables;又要選擇account表,故輸入select *front account;

先查詢一下資料庫中的表,就顯示以下

MySQL中的開啟和關閉事務|學習筆記MySQL中的開啟和關閉事務

确認資料沒問題之後,就開始轉賬操作

首先使用transaction,輸入start transaction;表示事務開始了,接下來執行的所有操作就都在這個事務之内,直到出現commit或rollback

MySQL中的開啟和關閉事務|學習筆記MySQL中的開啟和關閉事務

接下來,就開始執行update ,

輸入update account set balance=900 where name='zs';

這句話的作用就是更新張三的賬戶餘額,就是把張三減去100塊錢,結果張三的賬戶餘額就變成了900

MySQL中的開啟和關閉事務|學習筆記MySQL中的開啟和關閉事務

之後我們再輸入update account set balance=1100 where name='ls';

查李四的賬戶餘額就變成了1100

MySQL中的開啟和關閉事務|學習筆記MySQL中的開啟和關閉事務

但進行到這一步,此時的事務并未送出,而最後再輸入rollback,則事務就相當于沒有發生,就會復原到剛剛開始。

雖然整個操作進行完并沒有使得最後的結果發生變化,但并不證明操作沒有進行,因為每次操作後查找時都顯示了不一定的變化。由此我們應該明白事務可以復原并且可以送出!!

接下來,再重新進行一輪新的操作,輸入start transaction;

再更新資料update account set balance -balanc-100 where name=’zs’;

最後select *fron account;查詢表

MySQL中的開啟和關閉事務|學習筆記MySQL中的開啟和關閉事務

而之後輸入update account set balance -balanc+100 where name=’ls’;将balance-100變成balance+100之後,zs變ls張三變成李四之後,再查詢表,執行成功就可以發現表的資料發生了改變

MySQL中的開啟和關閉事務|學習筆記MySQL中的開啟和關閉事務

之後再輸入commit之後資料就無法在發生改變,且并不在復原。事務復原是復原到開始的時候,而輸入commit之後事務就已經結束了。無法再進行復原!!

如果要復原,隻能重新再開啟一個事務!!之後再輸入rollback。