【質問】ASP.NETスレ Part3【議論】at PHP
【質問】ASP.NETスレ Part3【議論】 - 暇つぶし2ch726:nobodyさん
07/06/05 11:47:32 5EDNjM+0
質問です。
環境:VS2005、C#+SQL2005

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

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

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


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch