Symfony2 webapp にマルチバージョン同時実行制御を実装したいと考えています。
これは、どのイベントでもUPDATE
、データベースに対して no が実行され、INSERT
s のみが実行されることを意味します。この要件に対する Symfony2 によるネイティブ サポートが見つからなかったので、これを手動で実装する方法を考えました。
各エンティティ (例: a ) の通常の ID (主キー) にUser
加えて、別のエンティティ プロパティ (例: another ) を追加しますuserID
。したがって、ユーザー属性が変更されるたびに、ユーザーのINSERT
別の行を単純に作成できます。その行には別ID
の がありますが、同じuserID
です。
エンティティは、特定の追加エンティティ ID によって常に識別できます。
しかし、このソリューションにはいくつかの問題があります。通常のエンティティ ID は主キーであり、したがってこのエンティティへのすべての関係の識別子です。結合された主キー (例えばID
plus timestamp
、またはID
plus entityID
)を作成することもできますが、Symfony2/Doctrine2 は結合された主キーをサポートするように構築されていません。
では、Symfony2/Doctrine2 で MVCC を実装するにはどのようにアプローチしますか? これを処理する方法はありますか?それとも、すべての変更を追跡する別の履歴テーブルを使用することをお勧めしますか?