事務的開啟回滾 提交

2021-10-01 18:17:08 字數 2395 閱讀 7248

mysql> use chapter06;

database changed

mysql> create table account(

-> id int primary key auto_increment,

-> name varchar(40),

-> money float

-> )engine=innodb;

query ok, 0 rows affected

mysql> insert into account(name,money)values(『a』,1000);

query ok, 1 row affected

mysql> insert into account(name,money)values(『b』,1000);

query ok, 1 row affected

mysql> select * from account;

±—±-----±------+

| id | name | money |

±—±-----±------+

| 1 | a | 1000 |

| 2 | b | 1000 |

±—±-----±------+

2 rows in set

//開啟事務的語句

mysql> start transaction;

query ok, 0 rows affected

//a向b賬戶轉賬100元

mysql> update account set money=money-100 where name=『a』;

query ok, 1 row affected

rows matched: 1 changed: 1 warnings: 0

mysql> update account set money=money+100 where name=『b』;

query ok, 1 row affected

rows matched: 1 changed: 1 warnings: 0

mysql> select * from account;

±—±-----±------+

| id | name | money |

±—±-----±------+

| 1 | a | 900 |

| 2 | b | 1100 |

±—±-----±------+

2 rows in set

//顯示結果在三表示沒有轉賬成功

結論:在事務中轉賬成功後沒有提交事務就退出了資料庫,由於事務中的語句不能自動提交,因此當前的操作會被自動取消。

提交事務語句,commit

//開啟事務

mysql> start transaction;

query ok, 0 rows affected

//a向b轉入100元

mysql> update account set money=money-100 where name=『a』;

query ok, 1 row affected

rows matched: 1 changed: 1 warnings: 0

mysql> update account set money=money+100 where name=『b』;

query ok, 1 row affected

rows matched: 1 changed: 1 warnings: 0

mysql> select * from account;

±—±-----±------+

| id | name | money |

±—±-----±------+

| 1 | a | 700 |

| 2 | b | 1300 |

±—±-----±------+

2 rows in set

//回滾事務 ,當前事務中的操作取消了

mysql> rollback;

query ok, 0 rows affected

mysql> select * from account;

±—±-----±------+

| id | name | money |

±—±-----±------+

| 1 | a | 800 |

| 2 | b | 1200 |

±—±-----±------+

2 rows in set

在mysql中,事務有四種隔離級別,接下來將針對這四種隔離級別進行詳細地講解。

(1)read uncommitted(讀未提交)

(2)read committed(讀提交)

(3)repeatable read(可重複讀)

(4)serializable(可序列化)

提交事務和回滾事務

9.5 提交事務和回滾事務 提交事務 commit 語句 事務 transaction 測試一下,在mysql中預設的事務行為是怎樣的 mysql預設情況下支援自動提交事務。實際上不符合開發習慣,為了保證資料安全,必須保證同時成功之後再提交 自動提交 每執行一條語句執行一次 怎麼將mysql的自動提...

JAVA設定手動提交事務,回滾事務,提交事務

設定資料庫是否自動提交事務 param flag throws sqlexception public void setautocommit boolean flag throws sqlexception 提交 throws sqlexception public void commit thro...

c mysql事務提交及回滾

之前在做有關資料庫的操作時發現,有些內容應該作為乙個事務一起提交,而不是每個都單獨提交,這就需要把這些操作當做乙個事務來處理。而我之前寫過簡單的資料庫的操作,因為mysql預設的是自動提交,我們就需要用到api mysql commit mysql commit mysql mysql,my boo...