Я использую команду MERGE на SQL Server 2008, чтобы вставить/обновить строку в таблице. Однако целевые и исходные таблицы одинаковы. Итак, я хочу проверить, присутствует ли строка, обновить ее в той же таблице или вставить ее. В любом случае, я не могу получить вставку, используя следующий скрипт.MERGE Self-Join SQL Server
Не могли бы вы никому указать, что происходит не так?
`MERGE INTO Table1 as t
USING (SELECT * FROM Table1 WHERE ConsumerId = @ConsumerId AND Table1Id = @Table1Id) AS s
ON (t.ConsumerId = s.ConsumerId
AND t.Table1Id = s.Table1Id)
WHEN MATCHED THEN
UPDATE SET
VersionNumber = s.VersionNumber + 1
WHEN NOT MATCHED THEN
INSERT (
ConsumerId,
Table1Id,
VersionNumber
)
VALUES (
@ConsumerId,
@Table1Id,
1
);
Runnig this says: 0 затронутых строк.