Ответ 1
руководство довольно ясно об этом ( "tableconstraint: эта форма добавляет новое ограничение в таблицу с использованием того же синтаксиса, что и CREATE TABLE." )
Итак, вы можете просто запустить:
ALTER TABLE example ADD UNIQUE (a, b);
При создании таблицы в PostgreSQL назначаются имена ограничений по умолчанию, если они не указаны:
CREATE TABLE example (
a integer,
b integer,
UNIQUE (a, b)
);
Но используя ALTER TABLE
, чтобы добавить ограничение, кажется, что имя является обязательным:
ALTER TABLE example ADD CONSTRAINT my_explicit_constraint_name UNIQUE (a, b);
Это вызвало некоторые несоответствия в именах проектов, над которыми я работал, и предлагает следующие вопросы:
Есть ли простой способ добавить ограничение к существующей таблице с именем, которое оно получило бы, если бы было добавлено при создании таблицы?
Если нет, следует ли вообще исключать имена по умолчанию, чтобы предотвратить несоответствия?
руководство довольно ясно об этом ( "tableconstraint: эта форма добавляет новое ограничение в таблицу с использованием того же синтаксиса, что и CREATE TABLE." )
Итак, вы можете просто запустить:
ALTER TABLE example ADD UNIQUE (a, b);
Стандартными именами индексов в PostgreSQL являются:
{tablename}_{columnname(s)}_{suffix}
где суффикс является одним из следующих:
pkey
для ограничения основного ключаkey
для уникального ограниченияexcl
для ограничения исключенияidx
для любого другого типа индексаfkey
для внешнего ключаcheck
для ограничения проверкиСтандартный суффикс для последовательностей
seq
для всех последовательностейДоказательство вашего единственного ограничения:
УВЕДОМЛЕНИЕ: СОЗДАТЬ ТАБЛИЦУ/УНИКАЛЬНО создать неявный индекс "example_a_b_key" для таблицы "пример"