Подтвердить что ты не робот

Изменить первичный ключ

У меня есть таблица в Oracle, которая имеет следующую схему:

City_ID  Name  State  Country  BuildTime  Time

Когда я объявил таблицу, мой первичный ключ был как City_ID, так и BuildTime, но теперь я хочу изменить первичный ключ на три столбца:

City_ID  BuildTime  Time

Как изменить первичный ключ?

4b9b3361

Ответ 1

Предполагая, что ваше имя таблицы city и ваш существующий первичный ключ pk_city, вы должны иметь возможность сделать следующее:

ALTER TABLE city
DROP CONSTRAINT pk_city;

ALTER TABLE city
ADD CONSTRAINT pk_city PRIMARY KEY (city_id, buildtime, time);

Убедитесь, что нет записей, где time есть NULL, иначе вы не сможете воссоздать ограничение.

Ответ 2

Вам нужно будет сбросить и повторно создать первичный ключ следующим образом:

alter table my_table drop constraint my_pk;
alter table my_table add constraint my_pk primary key (city_id, buildtime, time);

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

Альтернативный синтаксис для удаления существующего первичного ключа (например, если вы не знаете имя ограничения):

alter table my_table drop primary key;