Изменить первичный ключ
У меня есть таблица в Oracle, которая имеет следующую схему:
City_ID Name State Country BuildTime Time
Когда я объявил таблицу, мой первичный ключ был как City_ID
, так и BuildTime
, но теперь я хочу изменить первичный ключ на три столбца:
City_ID BuildTime Time
Как изменить первичный ключ?
Ответы
Ответ 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;