sql Alterar una tabla si no existe

Posted

tags:

篇首语:本文由小常识网(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的主要内容,如果未能解决你的问题,请参考以下文章

sql Reemplazar una cadena de una columna en una tabla。 MySQL REPLACE。

sql Reemplazar una cadena de una columna en una tabla。 MySQL REPLACE。

sql Buscar tablas en una base de datos SQL SERVER

sql 查询para poder eliminar el contenido de una tabla especifica

sql SQL脚本para listar todas las tablas de una base de datos

sql Ejemplodeactualizacióndeun campo de un tabla tomando el valor de un campo de una tabla dife