Я попробовал следующее:
SELECT tags FROM articles WHERE id = 1;
=> {news,new}
UPDATE articles SET tags = uniq(array_cat(tags, '{new,trendy,latest}')) WHERE id = 1;
=> [1]
SELECT tags FROM articles WHERE id = 1;
=> {news,new,trendy,latest}
, но по команде UPDATE я получаю:
ERROR: function uniq(text[]) does not exist
Теперь есть способ добавить несуществующие тегитолько в одной команде UPDATE?
Спасибо за вашу помощь!
РЕДАКТИРОВАТЬ:
Я думаю, что решением может быть итерация обновления для каждого отдельного тега с добавлением ограничения where, такогоas: WHERE NOT ('tag-name' = ANY(tags))
но мне интересно, сможем ли мы сделать это за один снимок.
EDIT2:
Обнаружил это https://grokbase.com/t/postgresql/pgsql-general/083k9e85rb/array-cat-without-duplicity, но кажется даже более сложным, чем итерация по каждому тегу.