blacklistEmailLastModified 即將被修改

說明 description

環境

Campaign Standard

問題/症狀

用例 - 從文件導入設定檔時,它們從檔中讀取的關鍵屬性之一是 blacklistEmail。 如下所示,如果在源字段上使用條件更新以避免對目標字段進行不必要的更新。

但是,您可能會注意到,對於導入的所有現有配置檔,BlackListEmailLastModified 字段都會被修改。 預期的行為是,只有在修改 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

如上述更新所示,無論 blacklistEmail (iBlackListEmail) 是否更新,BlackListEmailLastModified (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