Consulta e exclusão de registros MERGE
Eu tenho uma tabela que se parece com:
AccountID, ItemID
1, 100
1, 200
2, 300
Eu tenho um proc que aceita um parâmetro de valor de tabela que atualiza os itens associados a uma conta. Passaremos algo como o seguinte:
AccountID, ItemID
3, 100
3, 200
O proc se parece com:
procedure dbo.MyProc( @Items as dbo.ItemListTVP READONLY )
AS
BEGIN
MERGE INTO myTable as target
USING @Items
on (Items.AccountId = target.AccountId)
AND (Items.ItemId = target.ItemId)
WHEN NOT MATCHED BY TARGET THEN
INSERT (AccountId, ItemId)
VALUES (Items.AccountId, Items.ItemId)
;
END
Com base nos dados passados, espero que ele adicione 2 novos registros à tabela, o que faz.
O que eu quero é ter uma cláusula WHEN NOT MATCHED BY SOURCE que removerá itenspara a conta especificada que não são correspondentes.
Por exemplo, se eu passar
AccountID, ItemID
1, 100
1, 400
Então eu quero excluir o registro com 1, 200; mas deixe TODOS os outros.
Se eu apenas fizer:
WHEN NOT MATCHED BY SOURCE THEN
DELETE;
em seguida, ele removerá todos os registros das contas não referenciadas (por exemplo, IDs de conta 2 e 3).
Como posso fazer isso?
Obrigado,