2010-07-13 6 views
13

Ich möchte eine Spalte zu einer Tabelle hinzufügen, aber ich möchte nicht, dass es fehlschlägt, wenn es bereits der Tabelle hinzugefügt wurde. Wie kann ich das erreichen?MySQL: Wie füge ich eine Spalte hinzu, wenn sie noch nicht existiert?

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

möglich Duplikat [Spalte zu MySQL-Tabelle hinzufügen, wenn es nicht vorhanden ist ] (http://stackoverflow.com/questions/972922/add-column-to-mysql-table-if-it-does-not-exist) – derobert

Antwort

18

Verwenden Sie das folgende in einer gespeicherten Prozedur:

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; 

Referenz:

+0

Warum der '! =' Vergleich. Ich vermute, dass es einen guten Grund dafür geben muss. –

+0

Es sollte auch 'ADD COLUMN 'columnname''oder? –

+0

@SaadFarooq: Korrigiert die Spaltenüberprüfung, aber die Syntax ist ansonsten korrekt - [COLUMN ist optional, wenn Sie die Dokumentation überprüfen] (http://dev.mysql.com/doc/refman/5.1/en/alter-table. html) –