1

複数のユーザーが同時にログインし、全員が 1 つのテーブルにアクセスしてレコードを挿入できる JSP アプリを作成しました。

挿入が完了する前にページに表示したい (すべてのユーザーに対して) 挿入されている合計レコードの実行中のカウンターが必要です (挿入は、ユーザーが [送信] ボタンを押すと行われます..

では、もう少し詳しく説明してみましょう。user_a がログインします。挿入ページで、レコード 1 を挿入すると通知されます。[送信] を押すと、レコードが挿入されます。user_b がログインすると、挿入ページで、新しいレコードをテーブル カウンターに送信するとレコード 2 が挿入されることがわかり、カウンターが 2 にジャンプします。

問題は、ユーザーが挿入を行う前にカウンターを表示することです (そのため、unique_id を返すことができません)。

挿入が完了する前に最後のunique_idをフェッチして1を追加できることはわかっていますが、2番目のユーザーが同時にレコードを挿入する可能性があることを知って、そのレコードを予約するにはどうすればよいですか同じ unique_id を取得して 1) を追加すると、両方のユーザーが同じ番号になります。また、ユーザーが挿入を送信しない場合、その数は増加してはなりません...そのため、カウンタータイプのものはほとんどロールバックします。

Q:ユーザーが入力しているレコードの数がわかるように、現在テーブルにある合計レコードを表示するには、どのような戦略を使用できますか? (必要に応じてDBを変更できます。)コードを提供するだけでなく、これを達成する方法のアイデアを本当に探しています。

4

1 に答える 1

1

Web アプリケーションがあり、HTTP はステートレスであるため、HTTP 応答がユーザーに返された後、グローバル カウンターを確認することはできません。id の種類を変更するとどうなりますか? たとえば、ユーザーとレコード識別子の組み合わせとして? この方法では、同じユーザーが同時に複数のブラウザーから Web アプリケーションにアクセスする状況のみを処理する必要があります。レコードの総数と、次のレコードの可能な次の識別子を引き続き表示できます。別のオプションは、UUIDを使用することです。これは、フォームがクライアントに返されるときに準備 (および記憶) できますが、UUID を覚えるのは非常に困難です。

于 2013-10-09T07:45:38.997 に答える