【質問】ASP.NETスレ ..
[2ch|▼Menu]
726:nobodyさん
07/06/05 11:47:32 5EDNjM+0
質問です。
環境:VS2005、C#+SQL2005

複数人が更新するWebアプリで楽観的ロックを使用してDBにレコードをインサートする際
あるカラムA(IDのような一意のint型のカラム)に重複した値が入るのを避けるにはどうすれば良いのでしょうか?

SQL権限の関係で主キーは設定出来ずSQLで自動で値をふる機能も使えません。
現状は
@DBからカラムAの最大値を取得して1を足す
A@で取得した値をインサート文のvalueに入れてインサート文を実行
という流れを一つのトランザクションで行っていますが、複数の端末から同時に上記@Aの処理が
実行された時、カラムAの値が重複する場合があります。

解決策として
1)@の開始直前からインサートが終わるまでテーブルをロック
2)@の処理で取得した値を変数に入れておきインサート実行の直前に重複のチェック
の二つを考えているのですがどちらも決めてに欠けています…
1)はパフォーマンスの低下は確実、2)は根本的解決になっていない。
これ以外の重複を避ける方法というのはないでしょうか?
それとも重複を諦めるかパフォーマンスを諦めるかの二択になるんでしょうか?


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4227日前に更新/321 KB
担当:undef