SQL Server 2008:テーブルから読み込んで特定の条件で行を書きたい場合があります。問題は、別のリクエストがまったく同じ時刻に来て同じことをしたくないということです。私はここで説明しようとするでしょう:SQLクエリ排他読み取り/書き込みテーブル
表名: REQUESTQUEUE
Columns:
RequestID, StartDate, EndDate, RequestResult
Sample Data
1, 12/4/10 1:00pm, 12/4/10 1:02pm, Success
2, 12/4/10 1:04pm, 12/4/10 1:05pm, Success
3, 12/4/10 1:00pm, NULL, NULL
まだのように保留中の要求がある場合は私のアプリでは、ページのロードが、私はそれがこの表を見てみたいとすると(ID#3)それは何もしません。それ以外の場合は、保留中のリクエストがない場合は、IDと開始日を記入した新しい行が作成されます。
問題は、ほとんど同じ時刻にページが2回ロードされる状況に陥る可能性があることです。新しい行が作成される前にテーブルから読み込むと、2つの新しい行が表示されます。私はテーブルから読み込む何らかの並べ替えをしたいと思っています。もし未処理の要求がなければ、StartDateを埋め込んだ新しい行を挿入します。別のページがこのテーブルから読み込む前にすべての方法で実行するようにします私は "二重列"の効果を得ることはありません。
「ロック」などが必要な場合がありますが、私はそれを検索しましたが、私の実際の状況には何かを見つけられませんでした。私はこれが単純なストアドプロシージャであると確信しています。ちょうどここに正しい方向にプッシュする必要があります。
おかげで、あなただけのあなただけ行うことができ、テーブルへのすべての同時アクセスをブロックすると仮定すると、
ロバート
を使用して排他テーブル・ロックを取らずに、特定のプロシージャ内
SELECT/INSERT
コードへのアクセスをシリアライズだろうか? MySQL、SQL Serverなど? – JNKRDBMSとバージョンは何ですか?また**テーブルから** **すべての同時読み込みをブロックしたいのですか、または挿入プロセスに無関係に読み込みが許可されているのでしょうか? –
ああ、申し訳ありませんが、SQL Server 2008 – Robert