Ваша таблица, вероятно, выглядит следующим образом:
CREATE TABLE texts (
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
vals text[] NOT NULL
);
Если бы вы правильно нормализовали таблицу, решение было бы простым:
CREATE TABLE texts (
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
);
CREATE TABLE texts_vals (
id bigint REFERENCES texts NOT NULL,
val text PRIMARY KEY
);
Уникальность гарантируется автоматически!
С текстовым массивом это нельзя сделать с помощью простого ограничения.
Вы можете создать триггер, который проверяет условие, но триггеры всегда подчиняются условиям гонки по одновременным данным модификации, если вы не используете уровень изоляции SERIALIZABLE
.