Mysql动态更新数据库脚本的示例讲解

作者:执笔记忆的空白 时间:2024-01-23 11:22:49 

具体的upgrade脚本如下:

动态删除索引


DROP PROCEDURE IF EXISTS UPGRADE;
DELIMITER $$
CREATE PROCEDURE UPGRADE()
BEGIN
-- RESOURCE.AUDIO_ATTRIBUTE
IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = 'RESOURCE' AND TABLE_NAME = 'AUDIO_ATTRIBUTE' AND INDEX_NAME = 'resource_publish_resource_id_index')
 THEN
   ALTER TABLE `AUDIO_ATTRIBUTE` DROP INDEX resource_publish_resource_id_index;
END IF;
END$$
DELIMITER ;
CALL UPGRADE();
DROP PROCEDURE IF EXISTS UPGRADE;

动态添加字段


DROP PROCEDURE IF EXISTS UPGRADE;
DELIMITER $$
CREATE PROCEDURE UPGRADE()
BEGIN
-- HOMEWORK.HOMEWORK_QUESTION_GROUP.FROM_ID
IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'HOMEWORK' AND TABLE_NAME = 'HOMEWORK_QUESTION_GROUP' AND COLUMN_NAME = 'FROM_ID')
 THEN
   ALTER TABLE `HOMEWORK_QUESTION_GROUP` ADD COLUMN FROM_ID VARCHAR(50) NULL;
END IF;
-- HOMEWORK.HOMEWORK_QUESTION_GROUP.QUESTION_TYPE
IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'HOMEWORK' AND TABLE_NAME = 'HOMEWORK_QUESTION_GROUP' AND COLUMN_NAME = 'QUESTION_TYPE')
 THEN
   ALTER TABLE `HOMEWORK_QUESTION_GROUP` ADD COLUMN QUESTION_TYPE VARCHAR(50) NULL;
END IF;
-- HOMEWORK.HOMEWORK_QUESTION_GROUP.DIFFICULTY
IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'HOMEWORK' AND TABLE_NAME = 'HOMEWORK_QUESTION_GROUP' AND COLUMN_NAME = 'DIFFICULTY')
 THEN
   ALTER TABLE `HOMEWORK_QUESTION_GROUP` ADD COLUMN DIFFICULTY VARCHAR(50) NULL;
END IF;
END$$
DELIMITER ;
CALL UPGRADE();
DROP PROCEDURE IF EXISTS UPGRADE;

其他语法类似,主要区分EXISTSNOT EXISTS的用法。 

来源:https://blog.csdn.net/moneyshi/article/details/78061565

标签:mysql,动态,更新,添加,删除,数据库,脚本
0
投稿

猜你喜欢

  • 单步调试 step into/step out/step over 区别说明

    2022-03-09 20:03:26
  • Python 内置函数complex详解

    2022-02-16 03:57:41
  • 微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能

    2024-04-18 10:03:54
  • JavaScript setTimeout与setTimeinterval使用案例详解

    2024-04-18 09:45:10
  • 深入浅出MySQL双向复制技术

    2009-03-25 15:40:00
  • GoLang bytes.Buffer基础使用方法详解

    2024-04-27 15:28:09
  • python_tkinter弹出对话框创建2

    2023-10-17 06:27:29
  • MySQL窗口函数实现榜单排名

    2024-01-16 20:22:22
  • python3实现微型的web服务器

    2021-03-03 09:00:49
  • javascript实现简单的可随机变色网页计算器示例

    2024-04-16 09:37:07
  • 对Pytorch 中的contiguous理解说明

    2022-04-14 08:34:47
  • Transact_SQL小手册,适合初学者

    2008-08-25 19:40:00
  • Python yield的用法实例分析

    2022-08-03 10:00:21
  • Javascript 构造函数 实例分析

    2024-04-23 09:25:45
  • 在MySQL中创建实现自增的序列(Sequence)的教程

    2024-01-25 02:42:13
  • Django 限制访问频率的思路详解

    2021-08-17 16:52:57
  • T-SQL查询为何慎用IN和NOT IN详解

    2024-01-21 08:26:01
  • python 的numpy库中的mean()函数用法介绍

    2021-12-19 16:22:37
  • Python中正则表达式的详细教程

    2023-07-14 23:53:14
  • Python编程使用matplotlib挑钻石seaborn画图入门教程

    2021-04-12 18:28:17
  • asp之家 网络编程 m.aspxhome.com