2017-08-01 15 views
-1

oracleにテーブルの特定のレコードが更新されたときを見つけるコマンドはありますか。 oracleでレコードを更新する順序を検出したいとします。oracleで更新時間を見つける方法

+1

これを行う方法があるかどうかわかりませんが、長期的にこれが必要な場合は、最後に更新されたタイムスタンプ列をテーブルに追加してください。ところで、「ソフト削除」と呼ばれるものを使用すると、レコードを物理的に削除する必要はありません。ソフト削除では、物理的に削除せずにレコードが削除済みとしてマークされます。 –

+0

私はタイムスタンプの列を更新しましたが、ユーザーがデータベースから直接更新する場合、このフィールドは役に立ちません –

+0

このテーブルには、次のように「計算される」仮想列を作成できます。最後にsysdateが追加されるため、挿入/更新の履歴が表示されます。各日付の始めに "ins"、 "upd"などの単語を入力して、操作を示すことができます。その列に許されている最大値に達すると、値を切り捨てるいくつかのロジックを置くことを念頭に置いてください...ちょうどアイディアとして – g00dy

答えて

1

直接はありません。おそらくOracle Flashback Technologiesを使用できます。したがって、古いバージョンの行を見ることができます。

デフォルトでは、テーブルごとに900秒(15分間)の履歴を保持できます。あなたはそれを増やし、保つことができます。しかし、十分なスペースがあることを確認してください。

+0

これは、テーブル設計の問題を修正するよりも良い選択肢のようには聞こえません。 –

0

あなたがORA_ROWSCNについて知っておく必要があるときに、Oracleでテーブルの更新の特定のレコード

を見つけます。各行について、ORA_ROWSCNは、最新の変更の控えめな上限システム変更番号(SCN)を行に戻します。この擬似列は、およそrow was last updatedを決定するのに便利です。

続きを読むHere

関連する問題