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