このプログラムの既存の設計では、すべての変更がタイムスタンプ付きの変更ログ テーブルに書き込まれます。アイテムの属性の現在の状態を取得するためにJOIN
、changelog テーブルに移動し、最新のタイムスタンプを持つ行を取得します。
これは現在の値を追跡するのに厄介な方法ですが、現時点ではこの変更ログの設定を簡単に変更することはできません。
changelog テーブルに「IsMostRecent」ビットを追加して、動作を少し変更するつもりです。MAX()
これにより、集約や再帰シークとは対照的に、そのビットが設定された行を簡単に取得できます。
ビットが常に適切に設定されるようにするには、どのような戦略を採用しますか? または、ロギングテーブルの現在の使用に影響を与えない代替案はありますか?
現在、他のすべての行のビットをオフにしてから、最新の行のビットをオンにするトリガーアプローチを検討しています。INSERT