Нам не разрешено использовать CDC.Отслеживание изменений и отчетность
У нас есть требование, чтобы сообщить об изменениях, внесенных в таблицу, в формате:
On [Это дата], пользователь [UserName] изменил поле [FieldName] из [OldValue] на [ Новое значение]
Моя идея заключается в том, чтобы использовать Update/Вставить триггер на столе, вызовите его TableA и записать строку в новый TableA_Tracking tablem который AHS те же столбцы, а также в качестве внешнего ключа к исходная таблица.
Таблица A имеет 'LastUpdatedByUserId'
, а также колонку 'LastUpdateDate'
.
Хранение данных с помощью триггера в порядке. Тем не менее, мне интересно, есть ли эффективный способ вернуть данные, чтобы я мог сообщить об этом в приложение.
Есть ли шаблон, который я мог бы выполнить для извлечения данных в формат таблицы, и вернуть его в интерфейс для форматирования?
Я имею в виду, что-то на линии:
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 представляет собой таблицу, которая является прямой копией исходной таблицы, для ПК (первый столбец), за исключением. В таблице написано триггер обновлений и вставок.
У этого есть строка обновленной версии, а предыдущая версия ... и оттуда, возможно, внесите изменения? Но, я могу быть в стороне.
Я бы отфильтровал в приведенном выше примере PlacementId, так как это PK исходной таблицы, поэтому выбор будет более ограниченным. Кроме того, в этом примере единственными столбцами, которые я отслеживаю, являются FosterCareAllowanceFlag, InterstateAllowanceAmount, FosterCareAllowanceReason, FosterCareAllowanceDate и InterstateAllowanceFlag.