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