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