Удалить уникальность индекса в PostgreSQL
В моей базе данных PostgreSQL у меня есть уникальный индекс, созданный следующим образом:
CREATE UNIQUE INDEX <my_index> ON <my_table> USING btree (my_column)
Есть ли способ изменить индекс, чтобы удалить ограничение уникальности? Я посмотрел документацию ALTER INDEX, но, похоже, она не выполняет то, что мне нужно.
Я знаю, что могу удалить индекс и создать другой, но я бы хотел найти лучший способ, если он существует.
Ответы
Ответ 1
Вы можете удалить уникальный CONSTRAINT
, а не сам INDEX
.
Проверьте свой CONSTRAINTS
через select * from information_schema.table_constraints;
Тогда, если вы найдете такой файл, вы сможете удалить его следующим образом:
ALTER TABLE <my_table> DROP CONSTRAINT <constraint_name>
Изменение: связанная с этим проблема описана в этом вопросе
Ответ 2
Предположим, у вас есть следующее:
Indexes:
"feature_pkey" PRIMARY KEY, btree (id, f_id)
"feature_unique" UNIQUE, btree (feature, f_class)
"feature_constraint" UNIQUE CONSTRAINT, btree (feature, f_class)
Чтобы отбросить УНИКАЛЬНОЕ ОГРАНИЧЕНИЕ, вы должны использовать ALTER TABLE:
ALTER TABLE feature DROP CONSTRAINT feature_constraint;
Чтобы опустить ПЕРВИЧНЫЙ КЛЮЧ, вы также должны использовать ALTER TABLE:
ALTER TABLE feature DROP CONSTRAINT feature_pkey;
Чтобы удалить УНИКАЛЬНЫЙ [индекс], вы должны использовать DROP INDEX:
DROP INDEX feature_unique;
Ответ 3
Я не думаю, что это возможно... даже в пользовательском интерфейсе pgAdmin III, если вы попытаетесь отредактировать ограничение, созданное с помощью вашего оператора, поле "Уникальный" будет выделено серым цветом; вы не можете изменить его через пользовательский интерфейс. В сочетании с вашими исследованиями в документах ALTER INDEX я бы сказал, что это невозможно.