咱們打開兩個mysql client,首先關閉autocommit。而後分別同時按照從上到下執行,每條語句後面都標上了執行順序。mysql
mysql> set autocommit = 0; #1 │mysql> set autocommit = 0; #2 Query OK, 0 rows affected (0.00 sec) │Query OK, 0 rows affected (0.00 sec) │ mysql> insert into user values ("Stupid│mysql> select * from user; #4 ET"); #3 │Empty set (0.00 sec) Query OK, 1 row affected (0.03 sec) │ │mysql> mysql> commit; #5 │mysql> Query OK, 0 rows affected (0.02 sec) │mysql> │mysql> mysql> select * from user where name = │mysql> select * from user where name = "Stupid ET"; #6 │ "Stupid ET"; #7 +-----------+ │Empty set (0.00 sec) | name | │ +-----------+ │mysql> | Stupid ET | │ +-----------+ │ 1 row in set (0.00 sec) │
能夠看到右邊的client裏面是查不到新加入的name爲」Stupid ET」的用戶。sql
由於在執行#4這條命令的時候,致使右邊的client自動進入了一個事務了,而此時數據庫是沒有的name爲」Stupid ET」這個用戶的。因此就致使即便數據庫裏面存在name爲」Stupid ET」的記錄,右邊的client也查不到。數據庫