Alterar una tabla si existe un campo en MySQL

agregando-columna

agregando columna

En ocasiones es necesario alterar una tabla en MYSQL,  las cosas se complican si queremos hacerlo sólo en caso que exista determinado campo, pues MYSQL no tiene una sintaxis como un ALTER TABLE IF [CONDITION..] (o similar), en este caso tendremos que revisar previamente en la base de datos de meta-información (information_schema), lo siguiente es un procedimiento que realiza esta tarea:

Procedimiento SQL que altera una tabla:

DROP PROCEDURE IF EXISTS agregar_campo_nuevo;

DELIMITER $$
CREATE DEFINER=CURRENT_USER PROCEDURE agregar_campo_nuevo ( ) 
	BEGIN
	SELECT @columna_nombre:= COLUMN_NAME FROM
		information_schema.columns
		WHERE
			TABLE_SCHEMA = 'nombre_bd' AND
			TABLE_NAME = 'nombre_tabla' AND
			COLUMN_NAME = 'nombre_columna';
	SELECT @columna_nombre;
	IF @columna_nombre is null THEN 
	   ALTER TABLE `nombre_tabla` ADD `nombre_columna` TINYINT UNSIGNED NULL AFTER `id` ;
	END IF;
END$$

DELIMITER ;

CALL agregar_campo_nuevo;

DROP PROCEDURE agregar_campo_nuevo;

Descripción:

El código anterior agrega un procedimiento agregar_campo_nuevo que posteriormente es ejecutado y borrado, este procedimiento revisamos si existe el campo con nombre nombre_columna dentro de la tabla nombre_tabla que a su vez esta contenida dentro de la base de datos nombre_bd, si no campo existe entonces el resultado de la búsqueda es NULL y por lo tanto podemos agregar la el nuevo campo(nombre_columna).

Por otra parte podríamos hacer otra cosa en caso que el campo si existe, para esto solo tenemos que alterar el IF, como se muestra a continuación:

IF @columna_nombre IS NOT NULL THEN 
      -- hacer otra cosa
END IF;

Fuentes:

About Author

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *