ASP+SQL Serverで切実に困ってます。
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGたぶんすっごい基本的なことだと思うんで知ってる人いたらタスケテ。
ASP+MS SQL Serverで作ったWebのサービスに異常発生。
調べてみたらユニークでなきゃいけないIDがかぶってました。
どうやら
1.一番大きいIDを引っ張ってくる。
↓
2.それに+1する
↓
3.+1したIDをつけてINSERT。
っていうところで1→3が終わる前に他のユーザが1の処理を
はじめるとIDがかぶるってことがわかりました。
(ためしに自分で2台同時にボタンおしたらかぶりました)
会社でほかにわかる人がいないので凄い基本っぽい気がする
この問題が解決できません(涙
ロックとかトランザクションって調べたんですけどいまいち意味がわかってない
せいかうまくいきません。
17日の正午までメンテナンス中っていうページに差し替えて
しのいであるんだけどこのままじゃ・・・。
0056仕様書無しさん
NGNGふたつのセッションで同じ値の max (仮に10とする) を取得してしまったとしても、
そのうちのひとつのセッションで、先に dummy = max + 1 ( dummy = 10 + 1 ) に
書き換えれば、dummy = 10 の行は存在しなくなるでしょ。
もうひとつのセッションで dummy = 10 の行への書き込みを試みても、そんな行は
もうないから、書き込みは行えないというわけ。
0057デフォルトの名無しさん
NGNG複数のクライアントからアクセスすると、「容量を超えていたため、
新規トランザクションを作成できません。」というエラーが返ってきます。
そこで、もしMSDEのトランザクション領域(デフォルト)のサイズをご存知の方が
いらっしゃいましたら、教えていただけないでしょうか?
よろしくお願いします。
0058縞栗鼠(シマリス)の親方
NGNG汚物入れを物色して女子生徒の使用済みタンポン・ナプキン等を
個人的に収集しているというのは事実。
中央高等学院では
生徒及びその保護者の個人情報を名簿図書館等に売却しています。
中央高等学院 http://chs-f.com/index.html 中央高等学院福岡校
http://www.chuo-school.ac/
0059名無しさん@Emacs
NGNGFAQなのレス。
(>50だと期待する結果にならんと思われ。
WHERE句のROWNUMは条件が入るとみんな偽になってしまうので。)
11件目から5件ってことは11件目から15件目を取得すればいいので、
SELECT * FROM syohin WHERE tanka < 10000 AND ROWNUM <= 15
MINUS
SELECT * FROM syohin WHERE tanka < 10000 AND ROWNUM < 11
つまり、15件以下のデータから10件以下をマイナスすればいいのレス。
0060名無しさん@Emacs
NGNGあと、間違ってた...鬱だ...
最後は ROWNUM < 11 ですわな...
0061デフォルトの名無しさん
NGNGMAX+1に適当なダミーデータを放り込んでおいて、INSERTの変わりにUPDATE
すべきかと思われ。
SQL*Serverにあるのかどうか知らんが、SWQENCEつかうのが一番いいとおもわれ。
0062デフォルトの名無しさん
NGNG方法1.1〜3をBEGIN TRANSACTIONとCOMMITで囲む。(これにより排他がかかる)
方法2.ユニークインデックスにして、重複エラー時は適当な時間をおいてリトライさせる。
方法3.1〜2を3のトリガー処理に書きSQL分を一つにする。トリガー処理は一意であるのでOKになる。
■ このスレッドは過去ログ倉庫に格納されています