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

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

City_ID  Name  State  Country  BuildTime  Time

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

City_ID  BuildTime  Time

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

42
задан Peter Lang 3 July 2015 в 09:48
поделиться

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;
38
ответ дан 26 November 2019 в 23:29
поделиться

Предполагая, что имя вашей таблицы - 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, иначе вы не сможете повторно создать ограничение.

69
ответ дан 26 November 2019 в 23:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: