Violação de chave primária MERGE do SQL Server
existe alguma chance de eu conseguir executar a instrução sql abaixo com sucesso? Atualmente, estou recebendo violação de chave primária na minha consulta abaixo.
O que eu quero é que, quando o primeiro registro foi inserido na tabela de destino e se houver outra mesma chave primária que será inserida, ele deverá executar um UPDATE não INSERT para evitar a violação da chave primária, mas não sei para escrevê-lo no script sql real. Pelo que sei, só tenho o script abaixo.
// User-Defined Tabled Type
DECLARE @tvpEmailType dbo.EmailType
INSERT @tvpEmailType VALUES ('[email protected]', 1)
INSERT @tvpEmailType VALUES ('[email protected]', 0)
MERGE dbo.EmailRepo AS TARGET
USING (SELECT DISTINCT * FROM @tvpEmailType) AS SOURCE
ON (TARGET.Email = SOURCE.Email)
WHEN MATCHED AND TARGET.Status <> SOURCE.Status THEN
UPDATE SET TARGET.Status = SOURCE.Status
WHEN NOT MATCHED THEN
INSERT (Email, Status) VALUES (SOURCE.Email, SOURCE.Status);