Как я могу добавить столбец к первичному ключу таблицы MySQL InnoDB? - PullRequest
0 голосов
/ 05 января 2010

У меня есть таблицы foo и bar:

create table foo(a int, b varchar(10), 
                 primary key (a));
create table bar(a int, c int, d int,
                 primary key (a,c),
                 foreign key(a) references foo(a));

Теперь у меня есть новый столбец e, который должен участвовать в первичном ключе бара. Как я могу это сделать? Кажется, я должен быть в состоянии удалить первичный ключ, добавить столбец и создать новый первичный ключ, но попытка отбросить первичный ключ дает мне:

mysql> alter table bar drop primary key;
ERROR 1025 (HY000): Error on rename of './mydb/#sql-1e08_16a273' to './mydb/bar' (errno: 150)

Это, кажется, имеет место только с первичными ключами, которые включают столбец внешнего ключа.

Ответы [ 2 ]

1 голос
/ 05 января 2010

Этот другой stackoverflow вопрос может помочь вам.

Полагаю, вам нужно сначала сбросить внешний ключ, а затем - основной.

0 голосов
/ 09 сентября 2015

Добавьте столбец e в таблицу столбцов, а затем обновите первичный ключ, введя следующую специфическую для MySQL команду:

ALTER TABLE bar DROP PRIMARY KEY, ADD PRIMARY KEY (a, c, e);
...