将新列添加到现有的复合唯一键
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.
谢谢
最后我通过以下步骤解决了问题:
显示我的 table 房间
的索引键
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);
我希望这会对其他人有所帮助。
我有 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.
谢谢
最后我通过以下步骤解决了问题:
显示我的 table 房间
的索引键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);
我希望这会对其他人有所帮助。