добавить новый столбец в существующий составной уникальный ключ

У меня есть таблица с именем "room" и она имеет следующий составной уникальный ключ

room_acId_levelId_year_name_unique

состоит из ЧЕТЫРЕХ столбцов:

acId
levelId
year
name

И я хочу добавить столбец isLevel к этому ключу без удаления и воссоздать его.

Новый ключ должен выглядеть так:

room_acId_levelId_year_name_isLevel_unique

со следующими столбцами:

acId
levelId
year
name
isLevel

Обратите внимание, что я просто хочу ИЗМЕНИТЬ ключ, а не УДАЛИТЬ и создать его снова. Также два столбца acId и levelId являются внешними ключами.

Спасибо


person ikuchris    schedule 08.05.2015    source источник


Ответы (1)


Наконец, я решил проблему, выполнив следующие действия:

  1. Показать индексные ключи для моего стола комната

    SHOW CREATE TABLE room;
    
  2. Мне нужно удалить эти внешние ключи acId и levelId.

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

Я надеюсь, что это поможет кому-то еще.

person ikuchris    schedule 20.05.2015