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...