Vou assumir que
arr_str
é do tipo text[]
(embora você não tenha usado o formato adequado para eles, então posso estar errado; se for esse o caso, você precisará converter seu valor para text[]
). Use a seguinte instrução, se você quiser remover duplicações, que já estão presentes no
arr_str
coluna: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}'
Ou use o seguinte quando quiser preservar as duplicações existentes:
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}'
Ambas as instruções não tocarão nas linhas, que não serão afetadas de qualquer maneira (veja
where not arr_str @> '{b,c,d}'
predicado). Esta é geralmente a melhor prática e quase sempre é recomendada quando os gatilhos estão envolvidos. http://rextester.com/GKS7382