将新列添加到现有的Composite Unique Key

时间:2015-05-08 08:38:53

标签: mysql unique-constraint composite-key alter unique-index

我的桌子名为" 房间" ,它具有以下复合唯一键

room_acId_levelId_year_name_unique

由四个列组成:

acId
levelId
year
name

我希望在没有删除的情况下将列isLevel添加到该键并重新创建

新密钥应该是这样的:

room_acId_levelId_year_name_isLevel_unique

包含以下列:

acId
levelId
year
name
isLevel
  

请注意,我只想更改密钥,而不是DROP并再次创建密钥    。另外两列 acId levelId 是外键。

谢谢

1 个答案:

答案 0 :(得分:1)

最后,我通过以下步骤解决了问题:

  1. 显示表格会议室

    的索引键
    SHOW CREATE TABLE room;
    
  2. 我必须放弃那些外键 acId levelId

    ALTER TABLE room DROP FOREIGN KEY room_acid_foreign;
    ALTER TABLE room DROP FOREIGN KEY room_levelid_foreign;
    

    请记住使用您在第一步中查询时获得的密钥名称

  3. 现在我可以删除我的唯一密钥 room_acId_levelId_year_name_unique

    ALTER TABLE room DROP INDEX room_acId_levelId_year_name_unique;
    
  4. 再次添加我的两个外键

    ALTER TABLE  room
    ADD FOREIGN KEY (sAcID) REFERENCES SAC(id)
    ON UPDATE CASCADE
    ON DELETE RESTRICT;
    
    ALTER TABLE  room
    ADD FOREIGN KEY (levelId) REFERENCES Level(id)
    ON UPDATE CASCADE
    ON DELETE RESTRICT;
    
  5. 添加我的五列新密钥

    ALTER TABLE room
    ADD UNIQUE KEY 
    room_acId_levelId_year_name_isLevel_unique 
    (acId, levelId, year, name, isLevel);
    
  6. 我希望这能帮助别人。