开发过程中经常需要提交可以重复执行的sql,当设计到需要增加字段时,可以参考如下办法:
1.如果是mysql 版本高于5.7.5
ALTER TABLE table_name DROP COLUMN IF EXISTS column_name;
2.通用方法
写一个存储过程,然后用存储过程取执行删除字段,然后在脚本执行完后,可以根据自己的实际情况选择删除掉存储过程
--切换到指定的数据 根据自己的情况
use your_dbname;
-- 删除存储过程
DROP PROCEDURE IF EXISTS sp_delete_column_if_exists;
-- 创建存储过程
DELIMITER $$
CREATE PROCEDURE `sp_delete_column_if_exists`(
IN `dbName` VARCHAR(255),
IN `tableName` VARCHAR(255),
IN `columnName` VARCHAR(255)
)
begin
SET @stmt = NULL;
SELECT
COUNT(*) INTO @stmt
FROM
information_schema.columns
WHERE
table_schema = dbName
AND table_name = tableName
AND column_name = columnName;
IF @stmt > 0 THEN
SET @drop_column = CONCAT('ALTER TABLE `', dbName, '`.`', tableName, '` DROP COLUMN `', columnName, '`;');
PREPARE drop_column FROM @drop_column;
EXECUTE drop_column;
DEALLOCATE PREPARE drop_column;
END IF;
END$$
DELIMITER ;
-- 调用存储过程
call sp_delete_column_if_exists('your_db', 'your_table' , 'your_column');