允许对不同事务Oracle进行多次更新

时间:2018-03-08 13:31:03

标签: oracle transactions isolation

是否可以在2个不同的事务上允许同一行上的Oracle 11g多次UPDATE?

例如在第一笔交易中

&a[1][0]

在第二个交易中,更新被第一个锁定。

UPDATE MYTABLE SET COLUMN1 = 'value1'

我需要允许在他们自己的交易中可见的两个更新 在我的上下文中,两个交易都将在最后回滚 它就像是与每个事务相关联的1级缓存,其中所有修改都将被应用并读取直到提交。

2 个答案:

答案 0 :(得分:1)

您可以这样做,但您会观察到预期的行为 - 您可能UPDATE 的记录,即来自其他会话的交易主题,但您必须等到第一个事务被提交(或回滚)。

所以你的场景将被序列化:

UPDATE  from session 1

UPDATE from session 2  is waiting

ROLLBACK from session 1

UPDATE from session 2 is completed

您可以使用此设置对其进行测试:

第1节

create table MYTABLE(column1 varchar2(10));

insert into MYTABLE(column1) values(null);
commit;

UPDATE MYTABLE SET COLUMN1 = 'value1';
select * from MYTABLE;
COLUMN1  
----------
value1 

第2节

UPDATE MYTABLE SET COLUMN1 = 'value2';

正在等待,直到会话1进行提交或回滚。

答案 1 :(得分:0)

  

你可以在单个sql.refer我的sql中更新多个列。

UPDATE MYTABLE SET COLUMN1 ='value1',COLUMN1 ='value2'