0

私のクライアントは、監査を列レベルで維持したいと考えています。彼は、すべての監査を列レベルで格納するテーブルが必要です。テーブル構造を決めました。すなわち

id,tablename,tablecolumn,primarkey,oldvalue,newvalue,date

しかし、各列レベルの変更をどのように確認するのか疑問に思っていました。old.columnname <> new.columnname のように手動でそれぞれをチェックしてから、監査テーブルに追加する必要がありますか?

それを行う他の方法はありますか?

4

1 に答える 1

1

同じタスクを与えられたとき、テーブル データを変更するためのストアド プロシージャをいくつか作成し、テーブルでの CUD 操作を制限して、ユーザーがストアド プロシージャのみを使用するようにしました。

SP は、要求されたアクション (つまり、テーブル内の行の作成、更新、または削除) を実際に実行し、すべてのアクションに対して監査テーブルに行を追加していました。

これは DB 最適化の観点からはかなり非効率的かもしれませんが、更新操作と監査が自動的にトランザクションに入れられ、監査エントリを追加しないと更新を完了できないため、監査を最大限に活用できると思います。

于 2013-03-18T11:46:19.767 に答える