MYSQL 删除一个字段前,判断字段是否存在

开发过程中经常需要提交可以重复执行的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');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值