将源与目标进行比较,然后在合并中再次将目标与源进行比较?

时间:2019-05-09 14:28:30

标签: sql merge

我正在查看一个合并脚本,并注意到如果source.column与target.column不同,该脚本会更新。

我不明白为什么他们要进行两次检查,一次检查source.column是否不同于target.column,然后又一次检查target.column是否不同于source.column。 / p>

将目标与源进行比较的第二个NULLIF对我来说似乎是多余的...

有人知道是否有这个原因吗?

WHEN MATCHED AND (
   NULLIF(Source.[code], Target.[code]) IS NOT NULL OR NULLIF(Target.[code], Source.[code]) IS NOT NULL OR 
   NULLIF(Source.[descE], Target.[descE]) IS NOT NULL OR NULLIF(Target.[descE], Source.[descE]) IS NOT NULL THEN
UPDATE SET
  [code] = Source.[code], 
  [descE] = Source.[descE]

脚本可以工作,但是我想我可以每隔一秒钟删除NULLIF,脚本仍然可以工作吗?

1 个答案:

答案 0 :(得分:0)

对于我的价值,我同意你的看法。如果遇到这种情况,我将在某些测试数据库上运行合并脚本,并删除第二和第四个nullif(),以确保在进行更改之前可以收到预期的结果。