2011-08-17 3 views
2

큰 innodb 테이블에서 일부 변경 작업을 수행해야합니다. 이전 테이블과 같은 테이블을 만든 다음 변경하는 것이 가장 좋습니다. 나는 이제 모든 테이블이 여전히 오래된 테이블을 참조하고 있음을 발견했다. 완전히 내 질문을 이해하기 위해 book_id의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; 

모든 외래 키는 내가 책을 테이블로 변경하려는 old_books과의 관계를 보여주는 다음 쿼리를 고려하시기 바랍니다. 어떻게해야합니까?

답변

1

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); 
관련 문제