megafax
@megafax
web-программист

Как сделать ограничение уникальности по массиву в PostgreSQL?

Есть колонка в таблице типа
character varying(16)[] NOT NULL DEFATULT '{}'::character varying[]

Возможно ли както средствами самого постгреса ограничить значения элементов массивов? Что то типа уникальности среди всех элементов массивов по всем строкам.
Аналогом такого может быть внешняя таблица с развернутым в строки массивом и внешним ключем на текущую и ограничением по уникальности, но нужно в итоге чтобы это было полем у текущей таблицы.
  • Вопрос задан
  • 256 просмотров
Решения вопроса 1
terrier
@terrier
Возможно ли както средствами самого постгреса ограничить значения элементов массивов?

Ну, да, вы же можете в CHECK constraint поставить любую sql или pl/pgsql функцию, которая проверяет какое угодно условие. При этом надо понимать, что CHECK срабатывает до вставки данных и видит только уже существующие данные. Если вам нужно, чтобы функция проверки видела и вставляемые данные, то нужно пользоваться триггерами.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы