• 締切済み

レコードの更新履歴について

Oracle初心者です。 レコードの更新履歴を残す方法を考えているところです。 ■やりたいこと 1)登録、更新、削除の全てについて 2)実行前のレコードを抽出したい 3)特定レコードの更新履歴を一覧として表示したい ■対象レコード ID(主キー、ユニーク) フィールドA(テキスト) フィールドB(テキスト) フィールドC(テキスト) 1つ方法として・・・ 履歴を残したいテーブルと同じ構造の履歴テーブルを作成して、登録、更新、削除が行われる際、必ずこの履歴テーブルに登録することを考えました。 が、あまりスマートでない気もしましたので質問します。 他によい案はありますでしょうか?

  • Oracle
  • 回答数1
  • ありがとう数0

みんなの回答

  • MZ-80B
  • ベストアンサー率56% (46/81)
回答No.1

> Oracle初心者です。 と自称されているのでありきたりの回答でいきます。 >履歴を残したいテーブルと同じ構造の履歴テーブルを作成 >して、登録、更新、削除が行われる際、 >必ずこの履歴テーブルに登録することを考えました。 アプリケーションで使用するなら、そのままトリガで実行するようにすればよいと思います。 変更前後の値をログとして保存することも可能ですから。 データの更新を監視することが目的であればファイングレイン監査という方法もあります。 アプリケーションからデータを利用するには、あまり適さないログ形式です。 ファイングレイン監査について http://biz.rivus.jp/technote507014.html

参考URL:
http://biz.rivus.jp/technote507014.html

関連するQ&A

  • ACCESSで一括レコード更新

    あるテーブルのレコードを、別のテーブルのレコードで更新したいです。具体的には、 二つのテーブルは同じフィールドを持っています。 フィールド名はID、名前、住所、電話で構成されています。 テーブルA  001 山田 東京 123456  002 田口 千葉 234567  003 鈴木 埼玉 345678  004 斉藤 佐賀 456789  005 上野 大阪 567890 テーブルB  003 鈴木 長野 345678  004 斉藤 佐賀 890123  008 野口 京都 090909 テーブルAとBでIDが一致するレコードだけテーブルAのレコード をそっくり入れ替えるにはどうしたらいいでしょうか。 この場合、003と004のレコードだけ更新します。 テーブルAのIDは主キーでオートナンバー型になっています。

  • 重複しているレコードを一気に削除する方法

    重複しているレコードを一気に削除する方法はありますか? 主キー  フィールド1 フィールド2 1     あ     い 2     あ     い のように、主キー以外は重複していえるのですが この場合、1か2を削除する方法はありますか? 一つのテーブルに主キー以外の値が重複しているレコードが多々あるので一気に削除したいです。

  • テーブルのレコード削除ができません

    SQLserver2000を触る事になり思った通りにならず困っております。 テーブルに主キーを設定せずデータ型を「int」でフィールドに重複する数値を入れてしまいました。 後から重複入力のミスに気づき重複したレコードを 「テーブルを開く」-「全行を返す」から1レコードを 削除しようとしたのですが、 「キー列の情報が足りないか、正しくありません。更新の影響を受ける行が多すぎます。」と表示され削除できません。 このテーブルは、多くのビューで使用してすでに動いている再作成することは難しいです。 このレコードを削除する良い方法はあるのでしょうか。 ご存知の先生方ご指導よろしくお願いいたします。

  • 「主キー以外重複データ(フィールド多数)」の抽出

    タイトルのような抽出方法が必要になり、その出し方で困っています フィールドが100以上ある大きなテーブルが複数(フィールド構造は全く同じ)あり、 そのレコードを一つにまとめる為重複データを抽出し削除したいのです 条件は「主キー以外の全てのフィールドのデータが一致してる重複データ」であり、 それをどうやればAccessの機能で出せるのか悩んでいます。 最初はクエリでグループ化して出そうと思ったのですがこのフィールド数では全て グループ化はできず、 VBAで一行ずつループで処理しようにもキー以外の全フィールド一致とする検索条件のSQLのWHERE式が複雑すぎると出て処理できませんでした フィールド数が多大なテーブルで主キー以外完全一致の重複レコードをうまく抽出するにはどうすればいいのでしょうか?

  • Accessのリレーションシップ

    Access初心者です。 Access2010でデータベースを作っていて、行き詰ってしまいました。 テーブル1にフィールドABCDEFがあって、Aに主キーが付いています。(Aはテキスト型でフィールドサイズ10です。) テーブル2にはフィールドAGHがあり、Aに主キーが付いてます。(Aはテーブル1と同じです。) テーブル3にも同じくフィールドAIJがあり、Aに主キーが付いています。(Aはテーブル1と同じです。) テーブル1のフィールドAを主テーブルとし、テーブル2・3のフィールドAにリレーションを組んでいます。 この時のリレーションシップで参照整合性と連鎖更新と連鎖削除にチェックを入れ、種類が一対一になりました。 その後、テーブル1でレコードを追加しようとすると、「テーブル'2'にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更を行うことができません。」と出ます。 これを解決する方法はどうするのか、お教えお願いします。 分かりにくい説明ですいません。

  • Access で更新クエリー

    教えてください。アクセス2000 Win2Kです。 あるDBから1つのレコードだけ抽出し(オートナンバーをキーにしてテーブル作成クエリでローカルテーブルを作成します。)その後、そのレコードを加工して元のDBにもどしたいのですが、1レコード上にフィールドが60近くあるので一括で更新したいのです。「T_ローカル.*」みたいな感じで・・・。なにか良い方法はありませんか?一旦、DBから削除して加工したレコードを追加する方法も考えたのですが、DBのオートナンバーが変わってしまうのでやめました。 なにか良い方法をご存じの方、是非ご教授ください。 よろしくお願いします。

  • 特定のレコードのみの更新クエリ

    過去ログより、項目の更新クエリはありましたが、 特定のレコードの更新方法はどう考えればいいのかアドバイスください。 テーブルには、毎月あたらしいデータがインポートされていきますが、 前月と比べて同じレコードは削除して常に新しいレコードにしておきたいのですが、これは一旦、重複クエリで重複レコードすべて削除してから新しいデータをインポートする2段階の方法をとるしかないのでしょうか?

  • アクセスの特定のレコード抽出方法

    アクセスで、同じ内容のレコードで更新日時フィールドのみ変化している複数のレコードから、更新日時の新しいレコードのみを抽出する方法を教えてください。

  • レコード更新時にデータ値を自動入力したい

    たびたびすみません。また詰まってしまったので教えていただけませんでしょうか。 Accessでレコード更新時にある項目に自動的に値を代入したいです。 前提としてテーブルは消費者マスターと単価マスターがあります。 単価マスターはフィールドとして単価ランク(主キー)と単価(通貨型)があります。 消費者マスターのレコードをフォームを使って編集する際に単価ランクをキーに 単価マスターから単価を引っ張ってきて 料金 というフィールドに代入して画面に表示し、 必要に応じて 料金 を画面から変更する形にしたいと考えてます。 どのように指定すればよいでしょうか? それからこれは別の質問にした方がいいかもしれませんが、差し支えなければ 教えて下さい。 レコードの更新の際に 更新日 というフィールドに当日日付を自動的に代入したいのですが どうすればいいでしょうか?

  • ファイルメーカー Get(更新有)

    ファイルメーカーVer7です。 全レコード(全フィールド)を対象にした編集、更新、削除、追加などした履歴を知る簡単な方法はありますか? Get(更新有)とか Get ( レコード編集回数 )だと対象レコードのみみたいなので。