Обновление оператора запроса слияния не работает - PullRequest
0 голосов
/ 13 июня 2019

У меня есть две таблицы Application и Application_temp.Я написал запрос на слияние для слияния данных из application_temp в приложение.Но обновление оператора не работает.Query вставляет весь набор записей снова вместо обновления, я сомневаюсь, что это должно быть из-за столбцов даты. Было бы здорово, если бы кто-нибудь мог помочь мне с этим.

Я пробовал несколько источников из Google, ничего не помогло.Попытка изменения различных условий сопоставления, но не работает.

CREATE PROCEDURE [dbo].[MergeApplication_tempToApplication]
AS
--CREATE UNIQUE INDEX cmdbid ON Application_Temp(cmdb_id) WITH 
(IGNORE_DUP_KEY = OFF)

MERGE INTO Application AS Target
USING Application_temp AS Source
    ON (
            --Target.CMDB_ID=Source.CMDB_ID
            --AND Target.Application_Name=Source.Application_Name
            Target.maas_application_id = source.maas_application_id
            )
WHEN MATCHED
    AND (
        Target.CMDB_ID <> Source.CMDB_ID
        OR Target.Application_Name <> Source.Application_Name
        OR Target.Fss_Portfolio <> Source.Fss_Portfolio
        OR Target.Managed_By <> Source.Managed_By
        --Target.Date_Created <> Source.Date_Created OR
        --Target.Date_Updated <> Source.Date_Updated
        )
    THEN
        UPDATE
        SET Target.cmdb_id = Source.cmdb_id
            ,Target.Application_Name = Source.Application_Name
            ,Target.Fss_Portfolio = Source.Fss_Portfolio
            ,Target.Managed_By = Source.Managed_By
            ,Target.Date_Created = Source.Date_Created
            ,Target.Date_Updated = Source.Date_Updated
WHEN NOT MATCHED
    THEN
        INSERT (
            Application_Name
            ,cmdb_id
            ,Fss_Portfolio
            ,Managed_By
            ,Date_Created
            ,Date_Updated
            )
        VALUES (
            source.Application_Name
            ,source.cmdb_id
            ,source.Fss_Portfolio
            ,source.Managed_By
            ,source.Date_Created
            ,source.Date_Updated
            );

Как я уже сказал, оператор обновления не работает.Может любой специалист по SQL Server.Помоги мне с этим?Я боролся с прошлого месяца.

...