即使未修改黑名单电子邮件,黑名单电子邮件上次修改也会被修改

描述 description

环境

Campaign Standard

问题/症状

用例 - 从文件导入配置文件时,他们从文件中读取的关键属性之一是 blacklistEmail。 如下所示,如果对源字段使用条件更新,则可以避免对目标字段进行不必要的更新。

但是,您可能会注意到,对于导入的所有现有配置文件,“blackListEmailLastModified”字段被修改了。 预期的行为是,仅当修改了黑名单电子邮件时,才应修改黑名单电子邮件上次修改时间。

下面是生成的 SQL 更新:

更新 NmsRecipient

SET iGender=COALESCE( OutTbl.iFld1084817585, 0),

iBlackListEmail=COALESCE( CASE OutTbl.iEnaFld1086062770 WHEN 1 THEN OutTbl.iFld1086062770 ELSE NULL END, CASE WHEN OUTTbl.iEnaFld1086062770=1 THEN 0 ELSE iBlackListEmail END),

iModifiedById=16107610,tsLastModified=$(curdate),

tsBlackListEmailLastModified=$(curdate),

tsBlackListAllLastModified=$(curdate)

从 wkf11373941_23_1 OutTbl

其中 NmsRecipient.iRecipientId=OutTbl.iPKey_1

AND OutTbl.iRecProcState> $(l)

AND OutTbl.iRecProcState< =$(l)

和OutTbl.iPKey_1< > 0

如上面的更新所示,无论黑名单电子邮件(iBlackListEmail)是否更新,黑名单电子邮件上次修改(tsBlackListEmailLastModified)字段都会更新。

解决方法 resolution

解决方案是将blackListEmailLastModified 字段添加到条件更新中。

请参阅以下内容:

并且生成的SQL更新显示,blackListEmailLastModified 只有在修改时blacklistEmail 才会被修改。

UPDATE NmsRecipient
   SET iGender=COALESCE( OutTbl.iFld1084817585, 0),
       iBlackListEmail=COALESCE( CASE OutTbl.iEnaFld1086062770 WHEN 1 THEN OutTbl.iFld1086062770 ELSE NULL END, CASE WHEN OutTbl.iEnaFld1086062770=1 THEN 0 ELSE iBlackListEmail END),
       tsBlackListEmailLastModified=COALESCE( CASE OutTbl.iEnaFld1169490137 WHEN 1 THEN OutTbl.tsFld1169490137 ELSE NULL END, CASE WHEN OutTbl.iEnaFld1169490137=1 THEN NULL ELSE tsBlackListEmailLastModified END),
       iModifiedById=16107610,
       tsLastModified=$(curdate),
       tsBlackListAllLastModified=$(curdate)
  FROM wkf11373941_25_1 OutTbl
 WHERE NmsRecipient.iRecipientId=OutTbl.iPKey_1
   AND OutTbl.iRecProcState>$(l)
   AND OutTbl.iRecProcState<=$(l)
   AND OutTbl.iPKey_1<>0
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f