使用临时表和INSTEAD OF UPDATE触发器中的联接来更新预期的行

时间:2018-10-31 08:00:09

标签: sql sql-server triggers sql-update temp-tables

我已经收到此sql脚本,我需要对其进行编辑以更新3个表上的HasChanged字段。我已经对脚本进行了一些编辑,但是它似乎没有按预期工作。 我现在的问题是,我正在使用2个字段(“ Vejkode”,“ Kommunekode”)唯一地标识“ Vejstykke”,但是“ Vejstykke”表中的行未更新。

触发器是“ INSTEAD OF UPDATE”。

我正在创建临时表:

    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”表中的预期行。让我知道是否需要更多信息,我会提供。

0 个答案:

没有答案
相关问题