【问题标题】:How can I add a column to the primary key of a MySQL InnoDB table?如何向 MySQL InnoDB 表的主键添加列?
【发布时间】:2011-01-01 19:27:38
【问题描述】:

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

这似乎只适用于包含外键列的主键。

【问题讨论】:

    标签: mysql primary-key innodb mysql-error-1025


    【解决方案1】:

    另一个stackoverflow 问题可能会对您有所帮助。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-25
        相关资源
        最近更新 更多