Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :Ajouter une contrainte si elle n'existe pas

Les FOREIGN_KEY_CHECKS est un excellent outil, mais si vous avez besoin de savoir comment le faire sans supprimer et recréer vos tables. Vous pouvez utiliser un SELECT instruction ON information_schema.TABLE_CONSTRAINTS pour déterminer si la clé étrangère existe :

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