咱们打开两个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也查不到。数据库