職場のデータベースに問題があります。現在、監査が実施されていますが、扱いにくく、多くのメンテナンスが必要であり、いくつかの点で不十分です。なので交換しています。
私はこれをできるだけ一般的な方法で行いたいと考えており、テーブルを設計し、すべてがどのようにリンクして更新されるかを説明しました。
さて、これですべて問題ありませんが、これらの監査テーブルにレコードを挿入する一般的な方法を記述できるようにしたいと考えています。(変更する各テーブルの列ごとにコマンドを入力する必要はありません。)
ストアド プロシージャ内に、テーブル内のすべての列を反復処理する方法はありますか? そして、これをいくつかのテーブルで動作し、追加された列などを自動的にピックアップして監査するように書きたいと思います。
何か案は?
編集:明確にする必要があると思います。テーブル内のデータを監査します。ただし、同じテーブルを使用して、データベース内のすべてのテーブルの監査データを保存します。
通常、更新が発生すると複数のテーブルで発生するため、トリガーを使用できませんが、これらの更新をすべて単一の変更セットの一部にしたいと考えています。
単一の Stored Proc 内からすべての更新を実行できるため、これは問題ではありません。更新されたすべてのフィールドを取得し、どのフィールドが変更されたかを把握し、それらの変更されたフィールドを監査テーブルに挿入できるループのような方法を好むだけです。
そして、各列のifステートメントとinsertステートメントの長いリストを持たずにこれを行いたいと思います。(これを一般的なループで行うことにより、追加された列が自動的に処理され、削除された列に悩まされることはありません)