「ID」列を持つデータベースがあります。データベースに新しいエントリがある場合は常に、データベースから最後の ID をフェッチし、値を増やしてから、Insert ステートメントで使用します。
EDIT : 複数の Insert ステートメントで使用する ID が必要です。この ID をプライマリ テーブルから取得し、この ID を使用して関連するテーブルに値を挿入します。
NextID = Select Max(ID) + 1 From Table
INSERT INTO Table1(ID, Col1, Col2...) Values(NextId, Value1, Value2...)
INSERT INTO Table2 (ID,col1,col2....) Values (NextID, Value1, Value2...)
並行性の問題があることはわかっているので、これが良い方法かどうかはわかりません。アプリケーションが NextID を読み取ろうとすると、アプリケーションの別のインスタンスも同じ値を読み取ろうとする可能性があるため、同時実行の問題が発生する可能性があります。
この状況に対処する適切な方法はありますか?つまり、データベースの分離レベルを設定する方法があります。この状況に適切な分離レベルはどれでしょう。
また、データベース内の ID を手動で維持およびインクリメントする別の方法を提案できる人がいれば、それも受け入れます。
この情報が十分でない場合は、必要なものをお知らせください。
VB および MS Sql Server 2008 で ASP.Net を使用しています。SQL Server の組み込みの「ID」を使用したくありません。