MERGE Consulta y eliminación de registros
Tengo una tabla que se parece a:
AccountID, ItemID
1, 100
1, 200
2, 300
Tengo un proceso que acepta un parámetro de valor de tabla que actualiza los elementos asociados con una cuenta. Pasaremos algo como lo siguiente:
AccountID, ItemID
3, 100
3, 200
El proceso se parece a:
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
Basado en los datos pasados, espero que agregue 2 nuevos registros a la tabla, lo que hace.
Lo que quiero es tener una cláusula CUANDO NO SE COINCIDE CON LA FUENTE que eliminará los elementos para la cuenta especificada que no coinciden.
Por ejemplo, si paso
AccountID, ItemID
1, 100
1, 400
Entonces quiero que elimine el registro que tiene 1, 200; pero deja TODOS los demás.
Si solo hago:
WHEN NOT MATCHED BY SOURCE THEN
DELETE;
then eliminará todos los registros de las cuentas no referenciadas (es decir: identificadores de cuenta 2 y 3).
¿Cómo puedo hacer esto
Gracias