【问题标题】: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 并再次创建它
.还有两列 acId 和 levelId 是外键。
谢谢
【问题讨论】:
标签:
mysql
unique-constraint
composite-key
alter
unique-index
【解决方案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);
我希望这对其他人有所帮助。