Mysql Innodb重命名表导致关系问题

Mysql Innodb重命名表导致关系问题,mysql,innodb,Mysql,Innodb,我必须对大型innodb表执行一些alter操作,我发现最好创建一个类似于旧表的表,然后对其进行更改。我现在发现所有的表仍然引用旧表。为了全面了解我的问题,请考虑以下问题: 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_book

我必须对大型innodb表执行一些alter操作,我发现最好创建一个类似于旧表的表,然后对其进行更改。我现在发现所有的表仍然引用旧表。为了全面了解我的问题,请考虑以下问题:
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的所有外键都显示了与旧书的关系,我想将其更改为books表。我如何才能做到这一点?

您应该重新创建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);