- PR -

複数ページ間でのトランザクション

投稿者投稿内容
coasm
大ベテラン
会議室デビュー日: 2001/11/26
投稿数: 237
投稿日時: 2005-02-23 13:41
引用:

わかりやすくいいかえると、ショッピングカートのように、
あるものを一度キープしたら、コミットはしてなくても在庫は1つ減っている。



コミットしない限り、在庫は変わっていないように見えます。
トランザクションの分離って、そういうものでしょ?

そういうことをしたいのなら、在庫テーブルのほかに購入予約テーブルのようなものを作って
ちゃんとコミットしてやらないといけません。
(「予約しただけで購入しなかった」ものを正しく処理できるような工夫が必要ですが)

きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2005-02-23 15:14
引用:

たつごろーさんの書き込み (2005-02-23 12:52) より:
ショッピングカートのテーブルを用意すればいいかも。


もしくは同一テーブル内でフラグにより識別するとか。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-02-23 19:19
引用:

わかりやすくいいかえると、ショッピングカートのように、
あるものを一度キープしたら、コミットはしてなくても在庫は1つ減っている。


 これを買う、買わないの判断をせず、ブラウザを終了させてしまったり、回線が途中で切れた場合、どうなるのでしょう?

 ほとんどのサイトで、在庫数を明示せず、「豊富にあります」「残りわずか」などの大まかな表示しかされていないのはなぜでしょう?

 例えば、サーバにアクセスに行ったときには在庫が10個あった。でも、表示画面を見ながら買おうかどうしようか悩んでいるうちに10人の人が購入してしまった。このとき、悩んでいる人はその商品が買われてしまったことが、まだわかっていませんよね。そして、やっぱり買うことにして「購入」ボタンをクリックすると・・・「在庫がありません」。このとき、この人は「悩んでいるうちに買われてしまったのか、しかたがない」とあきらめるでしょうか。それとも「10個あるって書いているのに、どうして買おうとしたら『ない』になるのか」と怒り出すでしょうか。
 はたまた、誰かが「悩み中」の場合、他の人がカートに入れられない仕様なら・・・それはそれで、他のユーザにとってストレスになりますよね。

 セッション変数への格納が、シリアル化できないから出来なかったということは、インプロセスモード以外ですね。ということは、Session_Endイベントも発生しません。だとすると、回線が途中で切れた場合、いったいいつトランザクションを終了するつもりだったのでしょう?

 ユーザが、アプリケーションが期待するとおりの操作を行ってくれるとは限りません。出来るだけ多くのところで、どんな操作がされるおそれがあるか、情報収集しましょう。
hnk
常連さん
会議室デビュー日: 2003/03/19
投稿数: 46
投稿日時: 2005-02-24 04:58
みなさん、たくさんのご意見有難うございました。大変参考になりました。
結論として、今一度、技術面、仕様面、などからを見直してみることにします。

スキルアップ/キャリアアップ(JOB@IT)