0

アプリケーションは、一定の間隔でデータベースをポーリングします。ポーリングごとに、アプリケーションはすべてのテーブルを読み取ります。

最適化の一環として、INSERT/UPDATE/DELETE が発生した場合にのみ、アプリケーションがテーブルを読み取る必要があります。だから私はタイムスタンプの概念を使いたいです。

別のタイムスタンプ列があると、行の変更を追跡するのに役立ちます。

テーブルでクエリを実行しているときに、メモリ内に保存されたタイムスタンプがテーブルの最大タイムスタンプよりも小さいかどうかを確認できます。はいの場合、一部の行が変更されたことを意味します。

ただし、特定の行が削除された場合、この行に関連付けられている最新のタイムスタンプはもはや存在しません。したがって、この場合、タイムスタンプの最大値が正しい値を与えないため、上記のアルゴリズムは失敗します。

トリガーを使用せずに削除操作も追跡できる方法はありますか?

どんな助けでも大歓迎です。Sybase ASA データベースを使用しています。

4

1 に答える 1

1

おそらく、論理的な削除を実装できます。レコードを削除する代わりに、たとえば特定のフラグで削除済みとしてマークするだけです。

最大タイムスタンプがまだあり、フラグが設定されたレコードを選択クエリから除外できます (ジョブを自動的に実行するために、テーブルの上にいくつかのビューを作成する場合があります)。

于 2011-02-22T07:43:46.350 に答える