1

テーブルの変更を監査するためにトリガーを使用しています。現在、個々の列の変更を次のようにキャプチャしています。

DECLARE @statement VARCHAR(MAX)
SELECT @statement =
'Col1: ' + CAST(ISNULL(Col1, '') AS VARCHAR) + ', Col2: ' + CAST(ISNULL(Col2, '') AS VARCHAR) + ', Col3: ' + CAST(ISNULL(Col3, '') AS VARCHAR)
FROM INSERTED;

問題は、監査対象のすべてのテーブル/トリガーの列名を微調整する必要があることです。より一般的なアプローチを使用して、テーブルとは無関係に @statement を作成する方法はありますか?

乾杯デビッド

4

1 に答える 1

1

あなたがする必要があるのは、次のクエリを使用してメモリテーブルを構築し、同じものをループして必要なSQLステートメントを生成することです

information_schema.columns から column_name を選択します。ここで、table_name は「tName」のように ordinal_position で並べ替えられます

ただし、これがAUDITにとって正しいことかどうかはわかりません。後はどうやって引き戻すか。あなたのリリースの 1 つで、たまたまコラムを削除したとします。その場合はどうなりますか? どの列にどのデータが含まれているかをどのように知ることができますか。

于 2012-05-28T15:44:44.200 に答える