1. 程式人生 > >事務的4種隔離級別

事務的4種隔離級別

複製程式碼
#首先修改隔離級別
set tx_isolation='read-committed';
select @@tx_isolation;
+----------------+
| @@tx_isolation |
+----------------+
| READ-COMMITTED |
+----------------+

#事務A:啟動一個事務
start transaction;
select * from tx;
+------+------+
| id   | num  |
+------+------+
|    1 |    1 |
|    2 |    2 |
|    3 |    3 |
+------+------+

#事務B:也啟動一個事務(那麼兩個事務交叉了)
       在這事務中更新資料,且未提交
start transaction;
update tx set num
=10 where id=1; select * from tx; +------+------+ | id | num | +------+------+ | 1 | 10 | | 2 | 2 | | 3 | 3 | +------+------+ #事務A:這個時候我們在事務A中能看到資料的變化嗎? select * from tx; ---------------> +------+------+                | | id | num |                | +------+------+                | | 1
| 1 |--->並不能看到!  | | 2 | 2 |                | | 3 | 3 |                | +------+------+                |——>相同的select語句,結果卻不一樣                                   | #事務B:如果提交了事務B呢?            | commit;                           |                                   | #事務A:                            |
select * from tx; ---------------> +------+------+ | id | num | +------+------+ | 1 | 10 |--->因為事務B已經提交了,所以在A中我們看到了資料變化 | 2 | 2 | | 3 | 3 | +------+------+
複製程式碼