Я пытался создать уникальный индекс для столбца charactery varying[]
. Я создаю функцию, измененную из этой записи , тип которой был целым числом []. При добавлении списков строк массив приводит к дублированию.
Код
create function sort_array(character varying[]) returns character varying[] as $$
select array_agg(n) from (select n from unnest($1) as t(n) order by n) as a;
$$ language sql immutable;
CREATE UNIQUE INDEX ip_uniq ON table.external (sort_array(ip));
При обновлении
UPDATE table.external SET ip = array_cat(ip,'{1.1.1.1,2.2.2.2}') WHERE id = NO_ID
Результат
ip = {1.1.1.1,2.2.2.2,1.1.1.1,2.2.2.2}
Ожидается
ip = {1.1.1.1,2.2.2.2}