3

C#で簡単なWebサービス(asmx)を作成しました

クライアントは、post と title パラメーターを使用して Web サービスをヒットし、サービスがそのタイトル キーに関する詳細を含むオブジェクトを返すことを期待します。

私が直面している問題は、Web サービスの実行の開始時に、提供されたそのタイトルが DB に存在するかどうかを確認することです。そうでない場合は、正しいオブジェクトを構築して、DB に保存し、再構築を避けるために将来の検索に使用できるようにし (構築にサードパーティの Web サービスを使用するため)、クライアントが要求したオブジェクトを json で送り返します。為に。

ただし、これは競合状態につながります。これは、2 つのクライアントが同じタイトルを要求し、同じオブジェクトをデータベースに 2 回挿入することになる可能性があるためです。これは、一方がオブジェクトを書き込むのに十分な速度がなく、もう一方が要求する前に行われるためです。

Mysql データベースを使用していますが、この競合状態を回避する方法を見つけようとしていますか?

キーはストアド プロシージャですか。

どうすればこれを解決できますか?

注: 私の DB のキーは、タイトル列と年列です。

前もって感謝します

4

2 に答える 2

4

列に SQL Server UNIQUE 制約を追加して、一意性を強制することができます。競合状態が発生した場合は、エラーをキャッチしてタイトルを再度クエリするだけで、サービス コード内の (制約からの) エラーを処理できます。

于 2012-12-07T22:00:40.593 に答える
1

データベース内のタイトルに一意のキーを配置します (または、タイトルのハッシュの方がおそらく高速です)。最初に行を選択しようとしたときに行が存在しなくても、2 番目の呼び出しで DUPLICATE KEY 例外が発生します。

于 2012-12-07T22:01:58.013 に答える