blacklistEmail이 수정되지 않을 때 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=$(현재),
tsBlackListEmailLastModified=$(현재),
tsBlackListAllLastModified=$(현재)
최저가 wkf11373941_23_1 OutTbl
여기서 NmsRecipient.iRecipientId=OutTbl.iPKey_1
AND OutTbl.iRecProcState>
$(l)
AND OutTbl.iRecProcState<
=$(l)
및 OutTbl.iPKey_1<
>
0
위의 업데이트에서 볼 수 있듯이 blacklistEmailLastModified(tsBlackListEmailLastModified) 필드는 blacklistEmail(iBlackListEmail)의 업데이트 여부에 관계없이 업데이트됩니다.
해결 방법 resolution
해결 방법은 조건부 업데이트에 blackListEmailLastModified
필드를 추가하는 것입니다.
아래를 참조하십시오.
그리고 생성 된 SQL 업데이트는 수정 될 때만 blacklistEmail
수정된다는 것을 보여줍니다blackListEmailLastModified
.
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