【问题标题】:add new column to existing Composite Unique Key将新列添加到现有的复合唯一键
【发布时间】:2015-07-19 02:35:12
【问题描述】:

我有一个名为 "room" 的表,它具有以下复合唯一键

room_acId_levelId_year_name_unique

由四列组成:

acId
levelId
year
name

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

新的密钥应该是这样的:

room_acId_levelId_year_name_isLevel_unique

包含以下列:

acId
levelId
year
name
isLevel

请注意,我只想 ALTER 键,而不是 DROP 并再次创建它 .还有两列 acIdlevelId 是外键。

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    1. 显示我的桌子的索引键房间

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

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

    【讨论】:

      猜你喜欢
      • 2011-01-21
      • 2016-07-27
      • 1970-01-01
      • 2023-04-06
      • 2019-10-31
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 2012-05-10
      相关资源
      最近更新 更多