【问题标题】:how to add new column to existing composite primary key如何将新列添加到现有的复合主键
【发布时间】:2011-01-21 01:04:07
【问题描述】:

我遇到了一个问题,我在 MYSQL 表中已经有一个复合主键。但是现在我在该表中添加了另一列,并且由于一些需求更改,我必须修改该复合主键,以便我需要将前面提到的列添加到该复合主键列表中。谁能告诉我如何在不删除现有复合主键的情况下更改该表。我在 Rails 项目中这样做

【问题讨论】:

  • 请注意,我对复合主键中的某些列有外键
  • 部分主键的外键?那是糟糕的魔力。你真的应该切换到自动增量主键。
  • 删除键不应该删除值 - 为什么不能删除 PK?

标签: mysql


【解决方案1】:

您不能更改主键。您必须删除并重新添加它:

ALTER TABLE MyTable
  DROP PRIMARY KEY,
  ADD PRIMARY KEY (old_col1, old_col2, new_col);

【讨论】:

  • 如果有什么东西阻止你删除主键,这就是这样做的方法
【解决方案2】:

但是如果一个键不存在呢? 示例:

ALTER TABLE xxxx ADD id INT NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY(id,id2,id3);

【讨论】:

    猜你喜欢
    • 2016-07-27
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多