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