Det är det faktiskt inte, det är en del av en sammansatt unik nyckel. Så egentligen borde din ON-klausul matcha på
on (tgt.app_lse_s = src.app_lse_s
and tgt.dt_ent_s = src.dt_ent_s)
För övrigt användningen av trim()
i ON-satsen är oroande, särskilt trim(tgt.app_lse_s)
. Om du infogar värden med efterföljande eller ledande mellanslag kommer din "unika nyckel" att producera flera träffar när du trimmar dem. Du bör trimma mellanslagen när du laddar data från filen och infoga trimmade värden i din tabell.
MJL_IDX0
måste mig ett unikt index. Det betyder att du måste inkludera dess kolumner i alla överväganden av unika poster.
Det är uppenbarligen en skillnad mellan din raka INSERT-logik och din MERGE INSERT-logik. Du måste jämföra de två påståendena och ta reda på vad skillnaden är.