2

行がまだ存在しない場合はテーブルに行を挿入する必要があり、ストアドプロシージャを使用してこれを行う必要があります。したがって、行がすでに存在するかどうかを確認するために選択し、その後に挿入を続ける必要があります。私が避けたいのは、ストアドプロシージャの2人の呼び出し元が行が存在しないことを確認し、両方が行を挿入しようとする競合状態です。

これを解決するための私の最初の考えは、テーブルをロックすることですが、残念ながらLOCK TABLE、ストアドプロシージャで発行することはできません。

クライアント(C#)で重複キー挿入例外をトラップしないようにしたい。

テーブルまたは代替ソリューションをロックする方法はありますか?

4

2 に答える 2

2

あなたが使用することができます

insert into ... on duplicate key

例@thummperの答えを見てください:

重複キーで無視しますか?

于 2011-09-06T09:37:57.307 に答える
0

別のオプションは使用することです

INSERT IGNORE INTO ... 

また、この挿入が2回行われることで違反する一意のキーがある限り、2回目には実行されません。

于 2012-09-22T14:25:40.363 に答える