2011-07-05 12 views
0

これが最善の方法かどうかわかりませんが、良い方法があれば投稿してください。ADOトランザクションとREADPAST

ファイルを読み込んでレコードを挿入するアプリケーションがあります。 ファイル全体が1つのトランザクションで処理されます。

レコードが挿入される前にテーブルが重複 をチェックする必要があります(注意:例外があるので、私はこのテーブル制約することはできません)

ので、重複チェックは通常のSELECT文ですが、問題は、現在のトランザクションから未接続のレコードを読み取ります。 私はREADPASTとREADCOMMITTEDヒントをselectステートメントに含めましたが、それでもレコードは返されます。

アイデア?

+0

どのように重複を処理するつもりですか?トランザクション全体または他のいくつかのbusinnesロジックのロールバックを行いますか?フィールドのユニークなインデックスを作成し、アプリケーション内で例外をキャッチする方が良いでしょうか? – heximal

+0

お返事ありがとうございます。問題は、同じファイル内の重複は許容されますが、レコードが前のファイルによってすでに作成されている場合は問題ではありません。 – Hannes

+0

問題の一部は、ユーザーがファイルを2回インポートするのを防ぐことです。私は本当にアプリケーションにこれを移動したくないが、私はする必要があるようだ。 – Hannes

答えて

0

これをdb内で実装する唯一の方法は、ロックテーブルです。 ISOLATION LEVEL SERIALIZABLE

+0

ありがとう、それは動作する可能性がありますが、並行性は大きな問題になります。アプリケーションでこれを処理してください。 – Hannes

関連する問題