2012-03-06 59 views
4

私はユーザーsmithとしてOracleデータベースに接続し、次の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)とリモートdbテーブルに挿入することを意味しています(bob.other_table)の両方がコミットされているか、またはローカルテーブルへの更新だけがコミットされていますか?

注: 'mylink'はリモートデータベースへのdblinkを表します。

+0

別のセッションで 'bob.other_table @ mylink'をチェックしてデータが存在するのか、それともうまくいかないのかを確認しましたか? – Ben

答えて

5

Oracleの二相documentationからは、メカニズムは、分散トランザクションを発行 ユーザーに対して完全に透過的にコミット。実際には、ユーザーは のトランザクションが配布されていることを知る必要はありません。トランザクションの最後の を示すCOMMIT文は、トランザクションをコミットする2フェーズコミット メカニズムを自動的に起動します。データベースアプリケーションの本文 に分散トランザクションを含めるには、コーディングまたは複合ステートメント の構文は必要ありません。

so - すべてがうまくいくと、両方の操作がコミットされます。

関連する問題