我在Spring事务中执行了一段很长的代码。我现在只想让该代码的一小部分以不同的隔离级别执行。如果我调用:
transactionTemplate.setIsolationLevel(Isolation.SERIALIZABLE.value());在这个小的子集之前,这会达到我的目标吗?或者我必须设置隔离级别,然后创建一个新的事务?
发布于 2013-12-20 09:28:53
我知道在SQL*Plus中,设置隔离级别意味着启动一个事务:
-bash-4.1$ sqlplus mbobak/mbobak
SQL*Plus: Release 11.2.0.3.0 Production on Thu Dec 19 20:26:18 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
SQL> select taddr from v$session where sid in(select sid from v$mystat where rownum=1);
TADDR
----------------
SQL> set transaction isolation level serializable;
Transaction set.
SQL> select taddr from v$session where sid in(select sid from v$mystat where rownum=1);
TADDR
----------------
0000007F510EFD60
SQL> 我假设这同样适用于您的Spring API。
只是想了点别的。另外,请注意,事实上,“set transaction”必须是事务中的第一条语句。一旦事务开始,就不能更改它的隔离级别。任何这样做的尝试都将导致:
ORA-01453: SET TRANSACTION must be first statement of transactionhttps://stackoverflow.com/questions/20693535
复制相似问题