Je suppose que arr_str est de type text[] (bien que vous n'ayez pas utilisé le bon format pour eux, je peux donc me tromper ; si c'est le cas, vous devrez convertir votre valeur en text[] ).
Utilisez l'instruction suivante, si vous souhaitez supprimer les doublons, qui sont déjà présents dans le arr_str colonne :
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, utilisez le suivant lorsque vous souhaitez conserver les doublons existants :
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}'
Ces deux instructions ne toucheront pas les lignes, qui ne seront de toute façon pas affectées (regardez le where not arr_str @> '{b,c,d}' prédicat). Il s'agit généralement de la meilleure pratique, et presque toujours recommandée, lorsque des déclencheurs sont impliqués.