2010-07-13 3 views
13

Je souhaite ajouter une colonne à une table, mais je ne veux pas qu'elle échoue si elle a déjà été ajoutée à la table. Comment puis-je atteindre cet objectif?MySQL: Comment ajouter une colonne si elle n'existe pas déjà?

# Add column fails if it already exists 
ALTER TABLE `TableName` ADD `ColumnName` int(1) NOT NULL default '0'; 
+0

double possible de [ajouter la colonne à la table mysql si elle n'existe pas ] (http://stackoverflow.com/questions/972922/add-column-to-mysql-table-if-it-does-not-exist) – derobert

Répondre

18

Utilisez ce qui suit dans une procédure stockée:

IF NOT EXISTS(SELECT NULL 
      FROM INFORMATION_SCHEMA.COLUMNS 
      WHERE table_name = 'tablename' 
      AND table_schema = 'db_name' 
      AND column_name = 'columnname') THEN 

    ALTER TABLE `TableName` ADD `ColumnName` int(1) NOT NULL default '0'; 

END IF; 

Référence:

+0

Pourquoi la comparaison '! ='. Je soupçonne qu'il doit y avoir une bonne raison pour cela. –

+0

En outre, il devrait être 'ADD COLUMN 'columnname'' droit? –

+0

@SaadFarooq: Correction de la vérification de la colonne, mais la syntaxe est correcte par ailleurs - [COLUMN est facultatif si vous consultez la documentation] (http://dev.mysql.com/doc/refman/5.1/fr/alter-table. html) –

Questions connexes