Использование временных таблиц и объединений в триггере INSTEAD OF UPDATE для обновления ожидаемых строк - PullRequest
0 голосов
/ 31 октября 2018

Я получил этот 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'. Дайте мне знать, если вам нужна дополнительная информация, и я предоставлю ее.

...