0

私のアプリケーション(クライアントサーバー)では、(データベースから)いくつかの行を編集する必要があり、それらが編集されている限り、誰も編集できる必要はありません。もちろん、これはトランザクションによって行われます。問題は、クライアント側の環境ではトランザクションがサーバー側で管理されるため、行を編集するクライアントがトランザクションに直接アクセスできないことです。(私はその状況でPHPを使用していますが、他のテクノロジーでも同じアプローチが採用されていると思います)。したがって、クライアントが編集を完了するまで、トランザクションを開いたままにする必要があります(編集のために行をロックしたままにするため)。PHPでは、前述のクライアントと同じホストにある他のクライアントから接続が切断される可能性があるため、持続的接続は役に立ちません。私のシナリオに何かアイデアはありますか?

ありがとうございました。

4

1 に答える 1

1

通常、このようなケースは、オブジェクトに直接設定するか、オブジェクトの親に設定するビジネスロックを介して処理されます。

ユーザーが編集を要求するときにtrueに設定し、ユーザーが編集を検証/キャンセルするときにfalseに設定する「inedition」などの列を追加します。

行のロックを解除する前に一部のユーザートランザクションが失われる可能性があることに注意してください。そのため、おそらく次のものが必要になります。

  • 行のロックを解除する定期的な治療
  • ユーザーまたは管理者がロックされたままの行のロックを解除できる機能画面のいずれか。

編集:この種のソリューションは、Oracleの「Selectforupdate」などのデータベース固有の機能に依存したくない場合に使用されます。Javaでは、EJBステートフルBeanは、UIからデータベースへのトランザクションへの参照を保持できます。データベースによっては、PHPforOracleまたはトランザクションに関するその他のデータベース固有の機能を使用するソリューションが存在する場合があります。

于 2011-05-26T12:37:58.833 に答える