MYSQL 通过检查当前列数据类型修改列数据类型脚本
MYSQL Modify Column Data Type Script with Checking of Current Column Data Type
我这里有一个 mysql 脚本,它改变了我的 'Job' table 并将 DESCRIPTION 列数据类型更改为 TEXT。但是,我将此脚本与所有其他脚本一起使用,有时 运行 多次。
我的问题是,我需要在我的脚本中添加什么,以便它检查 DESCRIPTION 列的数据类型是否已经是 TEXT?由于数据量大,此脚本执行时间过长,如果 DESCRIPTION 列已更改为 TEXT,我不希望再次执行它。
ALTER TABLE Job
MODIFY DESCRIPTION TEXT;
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 条件你可以 运行 你的改变 table 命令;
这是我所做的。这是很长的路要走,但它奏效了。它需要在存储过程中。感谢您的帮助@shahmanthan9。如果你们知道更好的方法,请 post 在这里。谢谢!
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;
我这里有一个 mysql 脚本,它改变了我的 'Job' table 并将 DESCRIPTION 列数据类型更改为 TEXT。但是,我将此脚本与所有其他脚本一起使用,有时 运行 多次。 我的问题是,我需要在我的脚本中添加什么,以便它检查 DESCRIPTION 列的数据类型是否已经是 TEXT?由于数据量大,此脚本执行时间过长,如果 DESCRIPTION 列已更改为 TEXT,我不希望再次执行它。
ALTER TABLE Job
MODIFY DESCRIPTION TEXT;
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 条件你可以 运行 你的改变 table 命令;
这是我所做的。这是很长的路要走,但它奏效了。它需要在存储过程中。感谢您的帮助@shahmanthan9。如果你们知道更好的方法,请 post 在这里。谢谢!
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;