关于Sql Server 中 Merge需要注意地方

  我们经常使用Merge处理保存一个集合的情况,在更新一些关系表时非常常见:

    1.集合中有并且数据库中也有,更新状态

              2.集合中有,数据库中没有,插入

              3.集合中没有,数据库中有的,删除

        具体语法如下:        

MERGE INTO [dbo].[Relation] AS R
USING @Table AS T ON R.[GroupId] = @groupId AND R.Id = T.[Id]
WHEN MATCHED THEN 
       UPDATE SET R.[IsDel] = 0    
WHEN NOT MATCHED THEN 
       INSERT ..... VALUES.....
WHEN NOT MATCHED BY SOURCE AND R.[GroupId] = @groupId THEN
       UPDATE SET R.[IsDel] = 1;

        特别需要注意的是第3种,一定要控制好范围,否则会造成全表更新的情况!!!

posted @ 2017-11-27 15:11  王亚奇  阅读(798)  评论(0)    收藏  举报