Я создал представление преобразования, которое обновляет основную таблицу значениями из двух разных таблиц.
При выполнении этого обновления мне нужно изменить значение HasChanged во всех таблицах для затронутых записей.
Пример: одна строка в основной таблице обновляется с указанием названия дороги из одной таблицы и названия города из другой.Для строк в 2 таблицах, содержащих новое имя дороги и название города, должно быть обновлено значение HasChanged до 0 (с 1), а также главная таблица.
Для этого мне нужно создать триггер.Пока это то, что у меня есть:
CREATE TRIGGER [Transform].[trItems_HasChanged] ON [Transform].[vItems_HasChanged]
INSTEAD OF UPDATE
AS
BEGIN
SET NOCOUNT ON
CREATE TABLE #inserted
(
Id BIGINT
)
CREATE TABLE #PostnummerBy
(
Postnr BIGINT
)
CREATE TABLE #Vejstykke
(
Id BIGINT
)
INSERT INTO #Inserted (Infohub_Id)
SELECT Id FROM inserted
CREATE NONCLUSTERED INDEX ixInserted_Infohub_Id ON #Inserted (Infohub_Id)
UPDATE
InfohubStaging.Perfion.tMirror_Items
SET
Infohub_HasChanged = 0
FROM
InfohubStaging.Perfion.tMirror_Items
JOIN #Inserted i ON i.Infohub_Id = InfohubStaging.Perfion.tMirror_Items.Infohub_Id
WHERE
Infohub_HasChanged = 1
UPDATE
InfohubStaging.Nav.tMirror_PimItem
SET
Infohub_HasChanged = 0
FROM
InfohubStaging.Nav.tMirror_PimItem
JOIN #Inserted i ON i.Infohub_Id = InfohubStaging.Nav.tMirror_PimItem.InfohubId
WHERE
Infohub_HasChanged = 1
UPDATE
InfohubStaging.Ax.tMirror_Items_LiveUpdates
SET
Infohub_HasChanged = 0
FROM
InfohubStaging.Ax.tMirror_Items_LiveUpdates
JOIN #Inserted i ON i.Infohub_Id = InfohubStaging.Ax.tMirror_Items_LiveUpdates.Infohub_Id
WHERE
Infohub_HasChanged = 1
END
Я не уверен, как правильно поступить по этому поводу.Мне известно, что при выполнении триггера обновления создаются 2 временные таблицы (данные до и после).Поскольку временные таблицы не индексируются, мне нужно создать для них индекс.Поэтому мне нужно создать 3 таблицы, по одной для каждой из таблиц, которым необходимо обновить значение HasChanged.
У моего ожидаемого результата этого есть значение HasChanged, обновленное в таблицах Vejstykke, PostnummerBy и Master.