MySQL : ajout conditionnel de colonnes à l'aide de ALTER TABLE IF NOT EXISTS
Dans MySQL, la modification d'une structure de table nécessite souvent l'ajout ou la suppression de colonnes. Cependant, ces opérations peuvent échouer si la colonne spécifiée existe déjà ou n'existe pas. Pour résoudre ce scénario, MySQL fournit un moyen conditionnel d'ajouter une colonne uniquement si elle n'existe pas à l'aide de la syntaxe ALTER TABLE IF NOT EXISTS.
Énoncé du problème
Considérez la tâche suivante : modifier une table nommée settings pour ajouter une colonne appelée multi_user en tant que TINYINT(1) avec une valeur par défaut de 1, mais uniquement si la colonne n'existe pas déjà. De nombreuses tentatives utilisant différentes approches, telles que la syntaxe ADD COLUMN IF NOT EXISTS ou une procédure stockée avec une instruction IF conditionnelle, ont échoué.
Solution
Pour ajouter conditionnellement une colonne en utilisant ALTER TABLE IF NOT EXISTS, suivez ces étapes :
IF NOT EXISTS( SELECT NULL FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'settings' AND table_schema = 'database_name' AND column_name = 'multi_user') THEN
ALTER TABLE `settings` ADD `multi_user` int(1) NOT NULL default '0';
Exemple
Voici un exemple de procédure stockée que vous pouvez créer :
DELIMITER $$ CREATE PROCEDURE Alter_Table() BEGIN IF NOT EXISTS( SELECT NULL FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'settings' AND table_schema = 'database_name' AND column_name = 'multi_user') THEN ALTER TABLE `settings` ADD `multi_user` int(1) NOT NULL default '0'; END IF; END $$ DELIMITER ;
Cette procédure vérifiera si la colonne multi_user existe dans la table des paramètres. Si elle n'existe pas, la colonne sera ajoutée. Sinon, l'opération sera ignorée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!