我的桌子名为" 房间" ,它具有以下复合唯一键
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 是外键。
谢谢
答案 0 :(得分:1)
最后,我通过以下步骤解决了问题:
显示表格会议室
的索引键SHOW CREATE TABLE room;
我必须放弃那些外键 acId 和 levelId
ALTER TABLE room DROP FOREIGN KEY room_acid_foreign;
ALTER TABLE room DROP FOREIGN KEY room_levelid_foreign;
(请记住使用您在第一步中查询时获得的密钥名称)
现在我可以删除我的唯一密钥 room_acId_levelId_year_name_unique
ALTER TABLE room DROP INDEX room_acId_levelId_year_name_unique;
再次添加我的两个外键
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;
添加我的五列新密钥
ALTER TABLE room
ADD UNIQUE KEY
room_acId_levelId_year_name_isLevel_unique
(acId, levelId, year, name, isLevel);
我希望这能帮助别人。