簡體   English   中英

如何在MySQL InnoDB表的主鍵中添加列?

[英]How can I add a column to the primary key of a MySQL InnoDB table?

我有表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)

僅在主鍵包含外鍵列的情況下才是這種情況。

這個其他stackoverflow問題可能會幫助您。

我的猜測是您需要先刪除外鍵,然后再刪除主鍵。

將e列添加到bar表,然后通過發出以下MySQL特定命令來更新主鍵:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM