Хорошо, это даст вам «более или менее» то, что вам нужно сделать. Ваш стол выглядит примерно так:
CREATE TABLE mytable_model
(
column_x_ptr_id integer NOT NULL,
column_y_ptr_id integer,
CONSTRAINT mytable_model_pkey PRIMARY KEY (column_x_ptr_id),
CONSTRAINT mytable_model_p_key UNIQUE (column_y_ptr_id)
)
Вам необходимо удалить оба индекса, создать новый PK во втором столбце и удалить ограничение NOT NULL:
ALTER TABLE mytable_model DROP CONSTRAINT mytable_model_pkey;
ALTER TABLE mytable_model DROP CONSTRAINT mytable_model_p_key;
ALTER TABLE mytable_model ADD CONSTRAINT mytable_model_pkey PRIMARY KEY (column_y_ptr_id);
ALTER TABLE mytable_model ALTER COLUMN column_x_ptr_id DROP NOT NULL;
Имейте в виду, что добавление первичного ключа к column_y_ptr_id
изменит столбец на NOT NULL
. Если в этом поле какие-либо записи имеют значение NULL, произойдет сбой. Тогда, как я уже упоминал, вы, вероятно, захотите поставить еще один индекс на column_x_ptr_id
по соображениям производительности. Какой тип вы используете, зависит от вас.