Die FOREIGN_KEY_CHECKS ist ein großartiges Werkzeug, aber wenn Sie wissen müssen, wie Sie dies tun können, ohne Ihre Tabellen zu löschen und neu zu erstellen. Sie können ein SELECT verwenden Anweisung ON information_schema.TABLE_CONSTRAINTS um festzustellen, ob der Fremdschlüssel existiert:
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