1

マルチユーザーアクセス環境では、レコードのグループに対してさまざまなアクションを実行する必要がある場合があります。たとえば、Ordersテーブルで、ユーザーが注文のグループを削除したり、レコードのグループを印刷したりしたい場合があります。これを実現するために、OrdersテーブルでaSelect( "a" a 「」は、「Select」SQL予約キーワードを回避するためのものです)。[注文]フォームで、ユーザーは[選択]フィールドのチェックボックスをクリックして処理する注文をチェックし、[印刷]、[削除]、またはその他の操作をクリックできます。フォームの背後にあるコードは、すべての注文で操作を処理するように指示しています。WHEREASELECT = TRUE

問題は、(まだ発生していませんが)aSelectチェックボックスがテーブルの基になるフィールドにバインドされており、2人のユーザーが同時にaSelectを変更できることです。したがって、ユーザーAが削除する2つのレコードを選択したが、削除ボタンを押す前に、100レコードを印刷しようとした別のユーザーが100レコードを選択したとします。その結果、意図した結果ではなく、100レコードすべてが削除されます。

解決策や代替案はありますか?このシナリオは、データベース全体で何度も実行されます。Ordersテーブルはほんの一例です。

ありがとう、

4

1 に答える 1

1

ユーザー名/ユーザー ID 列と OrderID 列を含むテーブルを作成します。

ユーザーが選択を行ったら、OrderID とユーザー名を使用してこのテーブルにレコードを追加します。次に、クエリを実行するときに、この選択テーブルに参加するか、IN() 句を使用してユーザー名でフィルター処理します。

出来上がり - ユーザー固有の選択。これは改善/拡張できる可能性がありますが、これは私の基本的な提案です。

于 2013-02-18T11:31:11.200 に答える