2010-01-05 100 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);