SQL Server - 从登台表复制数据

dop*_*ner 5 sql stored-procedures sql-server-2008

我正在使用临时表来执行验证并插入实时.

假设我有一个表PERSONS

TABLE Persons
(
Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
HouseNumber int,
)
Run Code Online (Sandbox Code Playgroud)

STAGING TABLE如下

TABLE Persons_Staging
(
Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
HouseNumber varchar(255),
)
Run Code Online (Sandbox Code Playgroud)

我需要编写一个过程来将数据从登台表传输到活动表,同时确保不插入重复项.我怎样才能做到这一点?

提前致谢

Alb*_*nbo 9

使用该MERGE命令.

像这样的东西:

MERGE 
    INTO Persons AS TARGET
    USING Persons_Staging AS SOURCE
    ON TARGET.ID = SOURCE.ID
    --WHEN MATCHED
    --    THEN UPDATE???
    WHEN NOT MATCHED BY TARGET
        THEN INSERT (Id , LastName , FirstName, HouseNumber)
    VALUES (SOURCE.Id , SOURCE.LastName , SOURCE.FirstName, SOURCE.HouseNumber)
    -- WHEN NOT MATCHED BY SOURCE
    --    THEN DELETE???
;
Run Code Online (Sandbox Code Playgroud)

如果要更新现有记录,请取消注释该UPDATE部件并添加适当的更新子句.与删除部分相同.