Presumo che arr_str
è di tipo text[]
(anche se non hai utilizzato il formato corretto per loro, quindi potrei sbagliarmi; in tal caso, dovrai trasmettere il tuo valore a text[]
).
Usa la seguente istruzione, se vuoi rimuovere i duplicati, che sono già presenti nel arr_str
colonna:
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}'
Oppure, usa il seguente quando vuoi preservare le duplicazioni esistenti:
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}'
Entrambe queste istruzioni non toccheranno le righe, che non saranno comunque interessate (guarda where not arr_str @> '{b,c,d}'
predicato). Questa è solitamente la migliore pratica, ed è quasi sempre consigliata, quando sono coinvolti i trigger.