2010-02-25 74 views
17

我遇到了问题,因为我已经有一个MYSQL表中的复合主键。但是现在我又向该表中添加了另一列,并且由于需要进行一些更改,我必须以这种方式修改该组合主键,以便我需要将此前提到的列添加到该组合主键列表中。任何人都可以告诉我如何改变该表而不丢弃现有的复合主键。我在Rails项目中这样做如何将新列添加到现有的复合主键

+0

请注意,我有外键一些是在复合主键 – nash 2010-02-25 15:00:06

+0

的外键的部分主键列?这是不好的魔咒。你真的应该切换到自动增量主键。 – MindStalker 2010-02-25 15:16:42

+0

放弃钥匙不应该放弃价值 - 为什么你不能放弃PK? – reech 2010-02-25 15:44:37

回答

25

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

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

这是这样做的方式,如果有什么东西阻止你放弃主键 – PrashanD 2017-06-27 08:34:25

0

但是如果一个密钥不存在? 例如:

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