Як я ВІДМОВИТИ таблицю PostgreSQL і зробити стовпчик унікальним?


166

У мене є таблиця в PostgreSQL, де схема виглядає так:

CREATE TABLE "foo_table" (
    "id" serial NOT NULL PRIMARY KEY,
    "permalink" varchar(200) NOT NULL,
    "text" varchar(512) NOT NULL,
    "timestamp" timestamp with time zone NOT NULL
)

Тепер я хочу зробити перманентну посилання унікальною по всьому столу, ПІДКЛЮЧИТИ таблицю. Хтось може мені допомогти в цьому?

ТІА


2
create unique index on foo_table (permalink)
a_horse_with_no_name

Відповіді:



231

Або дозволити БД автоматично призначити ім'я обмеження, використовуючи:

ALTER TABLE foo ADD UNIQUE (thecolumn);

1
Якщо ви це зробите, postgres створить обмеження, але ім'я, яке автоматично "призначається", - це слово "add". Я щойно спробував це
Санті

Коли я використовую синтаксис, поданий вище, Postgress створює новий контрант з ім'ям, mytable_mycolumn_key яким я цілком задоволений :-)
Адам

41

можливо також створити унікальне обмеження з більш ніж 1 стовпця:

ALTER TABLE the_table 
    ADD CONSTRAINT constraint_name UNIQUE (column1, column2);

Це, здається, не працює для чогось типу: ALTER TABLE actions ADD CONSTRAINT actions_unique_constraint UNIQUE (payload::text, name);абоALTER TABLE actions ADD CONSTRAINT actions_unique_constraint UNIQUE ((payload::text), name);
написofmandamus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.