Переименование таблицы в Innodb вызывает проблемы в отношениях - PullRequest
2 голосов
/ 17 августа 2011

Я должен выполнить некоторые операции изменения с большой таблицей innodb. Я нашел лучший способ создать таблицу, подобную старой, и затем изменить ее. Теперь я обнаружил, что все таблицы все еще ссылаются на старую таблицу. Чтобы полностью понять мой вопрос, рассмотрите следующие вопросы

CREATE table books2 LIKE books;
ALTER TABLE `books2` DROP `not_needed_fields`;
INSERT INTO books2 (fields) SELECT fields FROM books;
RENAME TABLE books TO old_books;
RENAME TABLE books2 TO books;

Все внешние ключи book_id показывают связь со old_books. Я хочу изменить его на таблицу books. Как я могу это сделать?

1 Ответ

1 голос
/ 17 августа 2011

Вы должны воссоздать FK, например -

-- Drop FK that refers to old_books
ALTER TABLE child_table
  DROP FOREIGN KEY FK_books;

-- Add new FK
ALTER TABLE child_table
  ADD CONSTRAINT FK_books FOREIGN KEY (book_id)
    REFERENCES books(book_id);
...