SQL Server 2008 + TVP合并

时间:2013-06-19 06:54:22

标签: sql sql-server table-valued-parameters

我正在使用表值参数来合并我的记录,但除此之外,我还需要从我的数据库中删除我的TVP表中不存在的记录。任何人都可以请帮忙。谢谢。

另一种方法是简单地删除所有记录而不是继续插入,但记录的数量可以达到数千,因此性能可能是一个问题。

MERGE [Customer_Address] ca --[AS TARGET]
   USING @TvpCustomer_Address tca --[AS SOURCE]
   ON (ca.CustomerId = tca.CustomerId)
   AND(ca.[Address] = tca.[Address])

   WHEN NOT MATCHED THEN
   INSERT (CustomerId, [Address]) Values(tca.CustomerId, tca.[Address]);

   WHEN MATCHED THEN
   -- Update...

1 个答案:

答案 0 :(得分:0)

你可以使用第三个'WHEN'案例:

WHEN NOT MATCHED BY SOURCE

我用它来标记丢失的记录。