篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql Alterar una tabla si no existe相关的知识,希望对你有一定的参考价值。
DROP PROCEDURE IF EXISTS alterTable;
CREATE PROCEDURE alterTable(
IN _nombreTabla VARCHAR(256),
IN _nombreColumna VARCHAR(256),
IN _tipoColumna VARCHAR(256),
IN _default VARCHAR(256)
)
BEGIN
DECLARE _count INT;
SET _count = (SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = _nombreTabla AND
COLUMN_NAME = replace(_nombreColumna,' ','_'));
-- Si no existe
IF _count = 0
THEN
IF _default != ''
THEN
-- Para enteros
IF _tipoColumna
LIKE concat('%INT%')
OR _tipoColumna = 'int'
OR _tipoColumna = 'INT'
OR _tipoColumna = 'integer'
OR _tipoColumna = 'INTEGER'
OR _tipoColumna = 'float'
OR _tipoColumna = 'FLOAT'
THEN
SET @def = concat(' DEFAULT ',replace(_default,'\'',''));
END IF;
-- Para varchar
IF _tipoColumna
LIKE concat('%varchar%')
THEN
SET @def = concat(' DEFAULT\'',_default,'\'');
END IF;
-- Para text no puede tener Default
IF _tipoColumna = 'TEXT' OR _tipoColumna = 'text'
THEN
SET @def = '';
END IF;
-- Si tiene default
SET @sqlExec = concat('ALTER TABLE ',replace(_nombreTabla,' ','_'),' ADD COLUMN ',replace(_nombreColumna,' ','_'),' ',upper(_tipoColumna),@def);
ELSE
-- Si no tiene default
SET @sqlExec = concat('ALTER TABLE ',replace(_nombreTabla,' ','_'),' ADD COLUMN ',replace(_nombreColumna,' ','_'),' ',upper(_tipoColumna));
END IF;
SELECT 'Creada' as resultado;
PREPARE stmt FROM @sqlExec;
EXECUTE stmt;
END IF;
-- Si existe aviso
IF _count>=1 THEN
SELECT 'Ya existe la columna' as resultado;
END IF;
END;
CALL alterTable('test','prueasasba_table','text',NULL);
以上是关于sql Alterar una tabla si no existe的主要内容,如果未能解决你的问题,请参考以下文章