SET TRANSACTION READ ONLY教程


将当前事务设置为只读模式。在该模式下所发出的查询,都是查询的设置事务只读模式时的数据状态(通过一致性读取实现)。比如我在 session 1 中设置事务为只读模式:
 
-- session 1
SQL> set transaction read only;
 
事务处理集。
 
SQL> select * from test1;
 
A                             B
-------------------- ----------
test1                        99
test1                      1010
test1                      1111
test1                      1212
test1                      1313
tianyc                     6666
 
已选择6行。

 
  在 session 2 中,我修改 test1 中数据,并提交:
 
-- session 2
SQL> insert into test1 values('new', 9999);
 
已创建 1 行。
 
SQL> commit;
 
提交完成。
 
SQL> select * from test1;
 
A                             B
-------------------- ----------
test1                        99
test1                      1010
test1                      1111
test1                      1212
test1                      1313
tianyc                     6666
new                        9999
 
已选择7行。

 
  此时,虽然事务已经持久化到数据库中了,但在 session 1 中查询到的仍是 6 条数据:
 
-- session 1
SQL> set transaction read only;
 
事务处理集。
 
SQL> select * from test1;
 
A                             B
-------------------- ----------
test1                        99
test1                      1010
test1                      1111
test1                      1212
test1                      1313
tianyc                     6666
 
已选择6行。

 
  这个功能有什么用处呢?当你要做多个报表时,为了构造一致的数据,避免由于制作报表期间数据被更新而导致不平衡的数据出现,可以设置你的事务为只读模式

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3