Как я могу добавить столбец к первичному ключу таблицы MySQL InnoDB?
У меня есть таблицы 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 ответа
Решение
Этот другой вопрос Stackru может помочь вам.
Я думаю, вам нужно сначала удалить внешний ключ, а затем основной.
Добавьте столбец e в таблицу столбцов, а затем обновите первичный ключ, введя следующую специфичную для MySQL команду:
ALTER TABLE bar DROP PRIMARY KEY, ADD PRIMARY KEY (a, c, e);