Selena, parte de este gran equipo, nos hizo el favor de crear esta crónica porque domina a la perfección dicho tema.
Solución:
Actualmente existe ahora para Maria DB 10.219
ALTER TABLE test ADD COLUMN IF NOT EXISTS column_a VARCHAR(255);
Bonificación, también funciona para MODIFICAR
ALTER TABLE test MODIFY IF EXISTS column_a VARCHAR(255);
mysql ALTER TABLE
no tiene IF EXISTS
especificación.
Puede hacer lo siguiente mediante el uso de un proceso almacenado o un lenguaje de programación si esto es algo que deberá hacer con regularidad:
Pseudocódigo:
-
Encuentre si la columna existe usando el siguiente SQL:
SELECCIONE
column_name
DEINFORMATION_SCHEMA
.COLUMNS
DÓNDETABLE_SCHEMA
=[Database Name]
YTABLE_NAME
=[Table Name]; -
Si la consulta anterior devuelve un resultado, significa que la columna existe; de lo contrario, puede continuar y crear la columna.
Puede usar esta solución, ya mencionada en otra publicación de StackOverFlow: (Ref.: https://stackoverflow.com/a/31989541/)
MySQL – ALTER TABLE para agregar una columna si no existe:
SET @dbname = DATABASE();
SET @tablename = "tableName";
SET @columnname = "colName";
SET @preparedStatement = (SELECT IF(
(
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE
(table_name = @tablename)
AND (table_schema = @dbname)
AND (column_name = @columnname)
) > 0,
"SELECT 1",
CONCAT("ALTER TABLE ", @tablename, " ADD ", @columnname, " INT(11);")
));
PREPARE alterIfNotExists FROM @preparedStatement;
EXECUTE alterIfNotExists;
DEALLOCATE PREPARE alterIfNotExists;
Recuerda difundir esta reseña si te fue útil.