mysql存储过程
对表结构字段的升级的例子:delimiter就是告诉mysql解释器,该段命令是否已经结束了,是否可以执行了。默认情况下,delimiter是分号 ; ,遇到分号就执行。后面的双美元符号 就是告诉mysql,遇到双美元符号再执行;
mysql存储过程设置编码格式CHARACTER SET 'utf8mb4'
DELIMITER $$
USE `ddxhl`$$
-- 如果存在存储过程,删除该存储过程
DROP PROCEDURE IF EXISTS `updateDB`$$
-- 创建存储过程
CREATE DEFINER=`root`@`localhost` PROCEDURE `updateDB`()
BEGIN
--开始
-- 升级数据库存储过程
-- Version:1.5.0
-- 升级 用户扩展信息表(user_ext),TABLE_SCHEMA表示数据库,table_name表示表名,column_name表示字段名
-- information_schema.columns查询所有的表和字段。
IF NOT EXISTS (SELECT * FROM information_schema.columns WHERE TABLE_SCHEMA = 'ddxhl' AND table_name = 'user_ext' AND column_name = 'profile') THEN
-- 编辑该表
ALTER TABLE `ddxhl`.`user_ext`
-- 添加字段
ADD COLUMN `profile` VARCHAR(512) CHARACTER SET 'utf8mb4' NOT NULL DEFAULT '' COMMENT '简介' AFTER `nickname`;
-- 界面提示
SELECT ' Update user_ext ok(Add Column:profile)';
END IF;
-- Version:1.5.0
-- 升级 订单表(order_info)
IF NOT EXISTS (SELECT * FROM information_schema.columns WHERE TABLE_SCHEMA = 'ddxhl' AND table_name = 'order_info' AND column_name = 'bank_name') THEN
ALTER TABLE `ddxhl`.`order_info`
ADD COLUMN `bank_name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '开户银行名称 ' AFTER `postcode`;
-- 添加索引
ADD INDEX `idx_sos_info` (`province_code` ASC, `city_code` ASC, `district_code` ASC, `street_code` ASC);
ALTER TABLE ddxhl.`gov_subsidy_detail`
-- 删除索引
DROP INDEX `idx_gov_subsidy_detail` ,
ADD INDEX `idx_gov_subsidy_detail` (`gov_object_id` ASC,`id_card` ASC),
ADD INDEX `idx_gov_ subsidy_detail_region` (`province_code` ASC, `city_code` ASC, `district_code` ASC);
SELECT ' Update order_info ok(Add Column:bank_name...account_no)';
END IF;
END$$
--结束
DELIMITER ;