2010-01-05 95 views
0

我有表foo和bar:如何将列添加到MySQL InnoDB表的主键?

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) 

这似乎只与主键的情况下包括一个外键列。

回答

1

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

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

+0

谢谢,这工作。我觉得没有尝试这种感觉很愚蠢。 – 2010-01-06 14:46:13

0

电子列添加到吧台,然后更新通过发出下面的MySQL特定命令的主键:

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