2012-03-06 68 views
4

如果我连接到Oracle数据库用户smith,并发出以下3个命令:oracle - 通过dblink提交?

update smith.tablea 
set col_name = 'florence' where col_id = 8; 

insert into [email protected] 
values ('blah',2,'uncle','new'); 

commit; 

这是否意味着更新到本地表(smith.tablea),并插入到远程数据库表(bob.other_table)都已经提交或只是对本地表的更新已经提交?

注意:'mylink'代表到远程数据库的dblink。

+0

你是否在另一个会话中检查了'bob.other_table @ mylink'来检查数据是否存在或是否无效? – Ben 2012-03-06 10:55:22

回答

5

documentation

甲骨文两阶段提交机制是完全透明的,谁发出的分布式事务 用户。事实上,用户甚至不需要知道交易是否分发。表示事务结束的COMMIT语句自动触发提交事务的两阶段提交 机制。在数据库应用程序的主体 内不需要编码或复杂语句 语法来包括分布式事务。

所以 - 是的,如果一切顺利,两个操作都会被提交。