0

我有桌子 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需要参与bar的主键。我怎样才能做到这一点?看来我应该能够删除主键、添加列并创建一个新的主键,但尝试删除主键会给我:

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

只有包含外键列的主键才会出现这种情况。

4

2 回答 2

1

这个其他stackoverflow问题可能会帮助你。

我的猜测是您需要先删除外键,然后删除主键。

于 2010-01-05T20:57:56.520 回答
0

将 e 列添加到 bar 表中,然后通过发出以下 MySQL 特定命令来更新主键:

ALTER TABLE bar DROP PRIMARY KEY, ADD PRIMARY KEY (a, c, e);
于 2015-09-09T13:59:53.410 回答