mysql ,oracle不一样的一个例子

oracle
SQL> select * from dba_test;

ID

50

session a:
SQL> update dba_test set id=id-10;

1 row updated.

SQL> commit;

在commit前执行session b

session b:
SQL> update dba_test set id=id-30;–被a阻塞,a提交后,

1 row updated.

SQL> select * from dba_test;

ID

10

a提交后,b中的更新依然起作用了,查看id是10

也就是a在提交后,b中的update用了最新的值。

mysql

root@localhost:[(none)] 14:52:41> show variables like ‘%iso%’;
±----------------------±---------------+
| Variable_name | Value |
±----------------------±---------------+
| transaction_isolation | READ-COMMITTED |
| tx_isolation | READ-COMMITTED |
±----------------------±---------------+
2 rows in set (0.00 sec)

root@localhost:[test] 14:53:05> select * from dba_test;
±—±-------+
| id | name |
±—±-------+
| 30 | 我们 |
±—±-------+

session a

root@localhost:[test] 14:53:20> begin;
Query OK, 0 rows affected (0.00 sec)

root@localhost:[test] 14:53:42> update dba_test set id=id-10;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

root@localhost:[test] 14:54:12> commit;
Query OK, 0 rows affected (0.00 sec)

session b;
root@localhost:[test] 14:54:14> update dba_test set id=id-20;
Query OK, 0 rows affected (3.19 sec)
Rows matched: 0 Changed: 0 Warnings: 0

root@localhost:[test] 14:54:27> select * from dba_test;
±—±-------+
| id | name |
±—±-------+
| 20 | 我们 |
±—±-------+
1 row in set (0.00 sec)

可以看到session b是没有更新记录的,并且在b中查看的结果是a的执行结果。

你可能感兴趣的:(MYSQL)