将新列添加到现有的复合唯一键

add new column to existing Composite Unique Key

我有 table 命名为“room”,它有以下复合唯一键

room_acId_levelId_year_name_unique

由四列组成:

acId
levelId
year
name

我想将列 isLevel 添加到该键而不删除并重新创建它

新密钥应该是这样的:

room_acId_levelId_year_name_isLevel_unique

以下列:

acId
levelId
year
name
isLevel

Note that I just want to ALTER the key , not to DROP and create it again . Also two columns acId and levelId are foreign keys.

谢谢

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

  1. 显示我的 table 房间

    的索引键
    SHOW CREATE TABLE room;
    
  2. 我必须删除那些外键 acIdlevelId

    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);
    

我希望这会对其他人有所帮助。