CDC の使用は許可されていません。
テーブルに加えられた変更を次の形式で報告する必要があります。
[この日付] に、ユーザー [UserName] がフィールド [FieldName] を [OldValue] から [New Value] に変更しました
私の考えは、テーブルで Update/Insert トリガーを使用し、それを TableA と呼び、行を同じ列を持つ新しい TableA_Tracking tablem とソース テーブルへの外部キーに書き込むことです。
TableA には列'LastUpdatedByUserId'
だけでなく a もあり'LastUpdateDate'
ます。
トリガーによるデータの保存はOKです。ただし、アプリケーションに報告できるように、データを取り戻す効率的な方法があるかどうか疑問に思っています。
データをテーブル形式に抽出し、それを UI に返して書式設定するために従うことができるパターンはありますか?
私は次のようなことを考えています:
WITH Track_CTE (
Placement_TrackID,
PlacementId,
PlacementEventId,
CarerId,
FosterCareAllowanceFlag,
InterstateAllowanceAmount,
FosterCareAllowanceReason,
FosterCareAllowanceDate,
InterstateAllowanceFlag,
LastUpdateUser,
LastUpdateDate
)
AS
(
SELECT
Placement_TrackID,
PlacementId,
PlacementEventId,
CarerId,
FosterCareAllowanceFlag,
InterstateAllowanceAmount,
FosterCareAllowanceReason,
FosterCareAllowanceDate,
InterstateAllowanceFlag,
LastUpdateUser,
LastUpdateDate
FROM
[Placement_Track]
)
SELECT *
FROM Track_CTE c1
LEFT JOIN Track_CTE c2
ON c2.Placement_TrackID = c1.Placement_TrackID - 1
Placement_Track は、PK (最初の列) を除いて、ソース テーブルの直接コピーであるテーブルです。テーブルは、更新および挿入のトリガーによって書き込まれます。
これには、更新されたバージョンと以前のバージョンの行があります...そして、そこから、おそらく変更を解決しますか? しかし、私は道を外れているかもしれません。
上記の例では、ソース テーブルの PK である PlacementId でフィルター処理を行い、選択がより制限されるようにします。また、この例で追跡している列は、FosterCareAllowanceFlag、InterstateAllowanceAmount、FosterCareAllowanceReason、FosterCareAllowanceDate、および InterstateAllowanceFlag だけです。