2010-07-13 72 views
13

Quiero agregar una columna a una tabla, pero no quiero que falle si ya se ha agregado a la tabla. ¿Cómo puedo conseguir esto?MySQL: ¿Cómo agregar una columna si aún no existe?

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

posible duplicado del [añadir la columna a la tabla de MySQL si no existe ] (http://stackoverflow.com/questions/972922/add-column-to-mysql-table-if-it-does-not-exist) – derobert

Respuesta

18

haga lo siguiente en un procedimiento almacenado:

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; 

Referencia:

+0

Por qué la comparación '! ='. Sospecho que debe haber una buena razón para ello. –

+0

También debería ser 'ADD COLUMN 'columnname'' ¿verdad? –

+0

@SaadFarooq: Se corrigió la comprobación de columnas, pero la sintaxis es correcta: [COLUMN es opcional si revisa la documentación] (http://dev.mysql.com/doc/refman/5.1/en/alter-table. html) –

Cuestiones relacionadas