街中で見かけて「グッときた人」の思い出

pro*cを使ってoracle 10g へinsert処理を行った際の戻り値はコミット処理が終わってから生成されるのかチェックポイントを発生させてから返されるのかどちらになるかわかる方いらっしゃいましたらご教授ねがいます。

A 回答 (2件)

こんにちわ。


#1 のmuyoshid です。

> 暗黙コミットが走っていると思いますから、
DDL 文発行時は暗黙コミットが実行されますが、DML 文発行時は
暗黙コミットは実行されません。
SQL*Plus はEXIT 時に未コミットのトランザクションはコミット
されますが・・・。

> インサート処理終了後、・・・データの射影が出来ず・・・
未コミットのデータは、他のトランザクションから読み取る事はできません。
これを、読取り一貫性と言います。
    • good
    • 0

こんにちわ。



> insert処理を行った際の戻り値は・・・
INSERT 文, COMMIT 文それぞれに戻り値があります。
INSERT + COMMIT の両方が成功して、処理が成功と言う事になるのでは?

この回答への補足

早速のご回答有難うございます。
insert処理後に明示的なコミットをソフトウェア上では、暗黙コミットが走っていると思いますから、exec sql以降は行っておりません。
質問の経緯を申しますと、まずC言語で作成されたプログラムが2つあります。これを仮にプロセスa,プロセスbとします。
プロセスaでは管理テーブルにデータを1行インサートします。
プロセスaで発行したインサートでは明示的にコミット処理を行っていません。インサート処理終了後、プロセスaは、プロセスbをキックして終了します。プロセスbでは管理テーブルから登録の有無をチェックします。処理フロー上当然プロセスbには管理情報を取得できると思っていたのですが、データの射影が出来ず例外処理が走った・・といった感じになってしまったのです。
このような事象が発生するということは、戻り値自体はあくまでinsert処理完了後に返されるということになるのではないでしょうか?

補足日時:2008/03/03 09:04
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す