Jag antar att arr_str
är av typen text[]
(även om du inte använde rätt format för dem, så jag kan ha fel; om så är fallet måste du casta ditt värde till text[]
).
Använd följande sats om du vill ta bort dubbletter, som redan finns i arr_str
kolumn:
update tabl1
set arr_str = (select array_agg(distinct e) from unnest(arr_str || '{b,c,d}') e)
where not arr_str @> '{b,c,d}'
Eller använd följande när du vill bevara befintliga dubbletter:
update tabl1
set arr_str = arr_str || array(select unnest('{b,c,d}'::text[]) except select unnest(arr_str))
where not arr_str @> '{b,c,d}'
Båda dessa uttalanden kommer inte att röra rader, som inte kommer att påverkas ändå (titta på where not arr_str @> '{b,c,d}'
predikat). Detta är vanligtvis den bästa praxisen och rekommenderas nästan alltid när utlösare är inblandade.