mysql可重复执行的增加表字段SQL的语句

前言

项目迭代过程中避免不了对表结构进行更改,比如为某张表增加一个字段。由于客户现场可能部署的版本不同,所以表的字段版本可能也不同,比如user表的name字段,A客户已经有name字段,B客户还没有name字段,有时就要求程序中的初始化表语句的sql要支持可重复执行且不报错。如添加字段:

ALTER TABLE  `user` ADD column `name` varchar(64)

如果表中已有这个字段时,执行此sql就会报错。

解决

set @exist := (select count(*)
               from information_schema.columns
               where table_name = 'user'
                 and COLUMN_NAME = 'name'
                 and table_schema = database());
set @sqlstmt := if(@exist > 0, 'select ''INFO: Column name of user already exists.''',
                   'ALTER TABLE `user` ADD column `name` varchar(64)');
PREPARE stmt FROM @sqlstmt;
EXECUTE stmt;

此sql完成的逻辑为:查询当前数据库中user表是否存在name的字段,如果存在则输出信息:INFO: Column name of user already exists.
如果不存在则执行sql:ALTER TABLE user ADD column name varchar(64)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值