есть ли шанс, что я смогу успешно выполнить приведенный ниже SQL-оператор?В настоящее время я получаю Нарушение первичного ключа по моему запросу ниже.
То, что я хочу, это то, что, когда первая запись была вставлена в целевую таблицу и если есть еще один первичный ключ, который будет вставлен, она должна выполнить UPDATE, а не INSERT, чтобы избежать нарушения первичного ключа,но я не знаю, чтобы написать это в реальном сценарии SQL.Насколько мне известно, у меня есть только следующий скрипт.
// User-Defined Tabled Type
DECLARE @tvpEmailType dbo.EmailType
INSERT @tvpEmailType VALUES ('mail@mail.com', 1)
INSERT @tvpEmailType VALUES ('mail@mail.com', 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);