MYSQL修改列数据类型脚本并检查当前列数据类型

时间:2016-06-09 05:15:03

标签: mysql conditional-statements alter-table

我这里有一个mysql脚本,可以改变我的工作'表并将DESCRIPTION列数据类型更改为TEXT。但是,我将此脚本与所有其他有时运行多次的脚本一起使用。 我的问题是,我需要添加到我的脚本中,以便检查DESCRIPTION列的数据类型是否已经是TEXT?由于数据庞大,此脚本执行时间过长,如果DESCRIPTION列已更改为TEXT,我不希望再次执行该脚本。

ALTER TABLE Job
MODIFY DESCRIPTION TEXT;

2 个答案:

答案 0 :(得分:1)

SELECT
  COLUMN_NAME, DATA_TYPE 
FROM
  INFORMATION_SCHEMA.COLUMNS 
WHERE
  TABLE_SCHEMA = 'YOUR_DB_NAME'
AND
  TABLE_NAME = 'YOUR_TABLE_NAME'
AND 
 COLUMN_NAME = 'YOUR_COLUMN_NAME';

这将为您提供被询问列的数据类型。

使用If条件可以运行alter table命令;

答案 1 :(得分:1)

这就是我的所作所为。这是很长的路,但它奏效了。它需要在存​​储过程中。谢谢你的帮助@ shahmanthan9。如果你们知道更好的方法,请在这里发布。谢谢!

DROP PROCEDURE IF EXISTS sp_JobUpdateDescriptionColumnType;

CREATE PROCEDURE sp_JobUpdateDescriptionColumnType()
    DETERMINISTIC
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
    IF NOT EXISTS( SELECT NULL
       FROM INFORMATION_SCHEMA.COLUMNS
       WHERE TABLE_SCHEMA = DATABASE()
             AND TABLE_NAME = 'Job'
             AND COLUMN_NAME = 'Description'
             AND DATA_TYPE = 'text' )
    THEN
        ALTER TABLE Job
        MODIFY Description TEXT;
    END IF;
END;

CALL sp_JobUpdateDescriptionColumnType;

DROP PROCEDURE IF EXISTS sp_JobUpdateDescriptionColumnType;