FOREIGN_KEY_CHECKS là một công cụ tuyệt vời nhưng nếu bạn cần biết cách thực hiện việc này mà không làm rơi và tạo lại các bảng của mình. Bạn có thể sử dụng SELECT tuyên bố ON information_schema.TABLE_CONSTRAINTS để xác định xem khóa ngoại có tồn tại hay không:
IF NOT EXISTS (
SELECT NULL
FROM information_schema.TABLE_CONSTRAINTS
WHERE
CONSTRAINT_SCHEMA = DATABASE() AND
CONSTRAINT_NAME = 'fk_rabbits_main_page' AND
CONSTRAINT_TYPE = 'FOREIGN KEY'
)
THEN
ALTER TABLE `rabbits`
ADD CONSTRAINT `fk_rabbits_main_page`
FOREIGN KEY (`main_page_id`)
REFERENCES `rabbit_pages` (`id`);
END IF