私はinserted
とdeleted
テーブルの内容をトリガーでキャプチャし、xmlとして変更ログに保存します。挿入されたテーブルと削除されたテーブルのSELECT文のXML出力を整形する
すぐに挿入して削除します。対応するテーブルを選択してFOR XML
を使用してxmlに変換してください。
アップデートでは、基本的にUPDATE
の状態の後前とを表す2つのテーブルからデータをマージしているので、もう少しトリッキーであることを輩出しています。今はUNION
を使ってinserted
とdeleted
のデータを1つの結果セットに結合しています。
<row>
<Column1>
<Before>Foo</Before>
<After>Bar</After>
</Column1>
<Column2>
<Before>Lorem</Before>
<After>Ipsum</After>
</Column2>
</row>
それとも
<row>
<Column1 Before="Foo" After="Bar" />
<Column2 Before="Lorem" After="Ipsum" />
</row>
しかし、私は:私は出力がなりたい何
<!-- Comments added for clarity. They don't appear in the actual output -->
<row> <!-- After -->
<Column1>Bar</Column1>
<Column2>Ipsum</Column2>
</row>
<row> <!-- Before -->
<Column1>Foo</Column1>
<Column2>Lorem</Column2>
</row>
:
SELECT [Column1], [Column2]
FROM
(SELECT [Column1], [Column2]
FROM inserted
UNION
SELECT [Column], [Column2]
FROM deleted) as Rows
FOR XML RAW, ELEMENTS
出力は次のようになりますこれを達成する方法がわからない何か案は?
注:一部のお客様のクライアントではまだSQL Server 2005が使用されているため、新しい変更の追跡は実際にはオプションではありません。
あなたは上のテーブルを結合することができ、主キーを持っていますか:
私が使用したクエリのサンプルは、次のようになりますか? –
はい。私はこのトリガーを複数のテーブルに適用する必要がありますが、それらはすべて同じように定義された主キーを持っています。 –