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.