Сделать поле UNIQUE или PRIMERY KEY

Здравствуйте. Спроектировал таблицу t1 и не указать для ячейки id - primary key или unique. Заполнил базу информацией уже свыше 2 миллионов.
Сейчас всплыла необходимость создания таблицы t2 с стобцом references ссылающимя на ячейку в t1.

Подскажите, что сделать...

ЗЫ. Есть предположение, что нужно полный дамп базы сделать, подправить момент создания таблицы t1 (указать primary key), очистить базу и занова залить дамп.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

А в чем

А в чем проблема-то?
У меня есть таблица с данными, у нее поле ID - не ключ, делаю его ключом - все ОК.
Я предполагаю, что могут быть ошибки, если в поле есть пустые или повторяющиеся значения - так это просто надо исправить

Так вопрос в

Так вопрос в том, что КАК это сделать?

легко

ALTER TABLE "public"."foo"
  ALTER COLUMN "ID" SET NOT NULL;
 
ALTER TABLE "public"."foo"
  ADD PRIMARY KEY ("ID");

ERROR:

ERROR: многочисленные первичные ключи для таблицы "foo" не дозволены

DDL таблицы в

DDL таблицы в студию, а то не понятно, о чем разговор. Из ошибки следует, что первичный ключ уже есть

id int not null default

id int not null default nextval('seq_id') - id так заполняется

чтобы вынести

чтобы вынести диагноз, нужен DDL-скрипт вашей таблицы
например такой у меня:

CREATE TABLE foo
(
  "ID" integer NOT NULL,
  "ParentID" integer,
  "FooField" character varying(100),
  xm xml,
  CONSTRAINT foo_pkey PRIMARY KEY ("ID")
)
WITH (OIDS=TRUE);
Я его взял в программе pgAdmin.
Тут например видно, что первичный ключ у меня уже есть и если я попытаюсь сделать еще один, то появится ошибка, как у вас.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023