Я получил этот sql-скрипт, который мне нужно отредактировать, чтобы обновить поле HasChanged в моих 3 таблицах. Я уже сделал некоторые изменения в сценарии, но, похоже, он работает не так, как ожидалось.
Моя проблема сейчас заключается в том, что я использую 2 поля ('Vejkode', 'Kommunekode'), чтобы однозначно идентифицировать 'Vejstykke', но строки в таблице 'Vejstykke' не обновляются.
Триггер - «ВМЕСТО ОБНОВЛЕНИЯ».
Я создаю временные таблицы:
CREATE TABLE #Id
(
Id NVARCHAR(100),
Kommunekode NVARCHAR(100),
Vejkode NVARCHAR(100)
)
CREATE TABLE #PostnummerBy
(
Postnr NVARCHAR(100)
)
Затем вставка данных в мои временные таблицы:
INSERT INTO #Id (Id)
SELECT DISTINCT Id FROM inserted
INSERT INTO #PostnummerBy (Postnr)
SELECT DISTINCT [Postnr] FROM inserted
INSERT INTO #Id (Vejkode, Kommunekode)
SELECT DISTINCT Vejkode, Kommunekode FROM inserted
Затем я создаю индексы для временных таблиц, чтобы разрешить объединения:
CREATE NONCLUSTERED INDEX ixId_Id ON #Id (Id)
CREATE NONCLUSTERED INDEX ixPostnummerBy_Postnr ON #PostnummerBy (Postnr)
Затем я обновляю каждую из 3 таблиц. Вот скрипт обновления для рассматриваемого вопроса:
UPDATE
Customer_InfohubStaging.Dawa.tMirror_Vejstykke
SET
Infohub_HasChanged = 0
FROM
Customer_InfohubStaging.Dawa.tMirror_Vejstykke
JOIN #id i ON i.Vejkode = Customer_InfohubStaging.Dawa.tMirror_Vejstykke.Vejkode AND i.Kommunekode = Customer_InfohubStaging.Dawa.tMirror_Vejstykke.Kommunekode
WHERE
Infohub_HasChanged = 1
Я не совсем понимаю, как этот код должен работать. Infohub_HasChanged не устанавливается в 0 в ожидаемых строках. Я пытался использовать AND с моим объединением, чтобы учесть и Vejkode, и Kommunekode.
Мой вопрос заключается в том, как правильно использовать временные таблицы и объединения для обновления ожидаемых строк в таблице 'Vejstykke'. Дайте мне знать, если вам нужна дополнительная информация, и я предоставлю ее.