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的执行结果。