Mysql动态更新数据库脚本的示例讲解
作者:执笔记忆的空白 发布时间:2024-01-23 11:22:49
标签:mysql,动态,更新,添加,删除,数据库,脚本
具体的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;
其他语法类似,主要区分EXISTS
和NOT EXISTS
的用法。
来源:https://blog.csdn.net/moneyshi/article/details/78061565
0
投稿
猜你喜欢
- numpy下fft模块提供了丰富的fft函数,几种常用的在这里记录一下使用方式fft输入实数samples,如果输入的sample是带虚数部
- 本文主要介绍使用Python调用ADB命令实现实时监控logcat关键字的功能采用多进程,可同时监控多个设备,监控多个关键字。需要配置ADB
- 这篇文章主要介绍了通过实例解析python描述符原理作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 线上有个需求,格式化,从一堆s1,s100-s199中找出连续的服并且格式化显示出来,如:神魔:S106-109,s123,s125御剑:
- 前言之前看过一遍的python教程,真的是自己看过一遍,python的程序能看懂,但是很难去实现。比较困难的自己实现一些代码,找工作原因,自
- 一.Sobel算子Sobel算子是一种用于边缘检测的离散微分算子,它结合了高斯平滑和微分求导。该算子用于计算图像明暗程度近似值,根据图像边缘
- oracle 11g的监听日志和警告日志都是在/u01/oracle/diag/tnslsnr/oracle/listener目录和/u01
- 1 修改默认目录最近刚刚开始学习Python,比较好的一个IDE就是jupyter Notebook。可以一个cell一个cell的显示结果
- <P><HTML><HEAD><TITLE>javascriptboy</TITLE&
- 1.Training: 如何训练模型一句话理解机器学习一般训练过程 :通过有标签样本来调整(学习)并确定所有权重Weights和偏差Bias
- 变量类型ECMAScript变量可能包含两种不同类型的数据值:基本类型和引用类型。基本类型基本类型指的是简单的数据段,5种基本数据类型:un
- 五、XML带来的好处 (1)更有意义的搜索 数据可被XML唯一的标识。没有XML,搜索软件必须了解每个数据库是如何构建的。这实际上是不可能的
- PyCharm最近在用PyCharm的时候运行结果总是在Console里输出,而不是在run输出,下面列出解决方法1.点击工具栏run,再点
- expect脚本expect是什么expect是一个免费的编程工具,用来实现自动的交互式任务,而无需人为干预。说白了,expect就是一套用
- 不同的开发工具,都能俘获各自的一批忠实的用户和支持者。VS Code、Eclipse、IDEA、atom....到底哪一款开发工具更好?一直
- Python项目中很多时候会需要将时间在Datetime格式和TimeStamp格式之间转化,又或者你需要将UTC时间转化为本地时间,本文总
- 登录流程:实例化一个driver,然后driver.get()发送请求最重要的:切换iframe子框架,因为豆瓣的网页中的登录那部分是一个i
- 思路利用scapy库,在这个库的基础下能够做很多的事情,python读取pcap包网上一找一大把将读取出来的pcap包改一个名字,然后写回,
- JavaScript是一门OOP,而有些人说,JavaScript是基于对象的。1) 如何创建对象:1. 使用constructor,例如:
- websocket网易聊天室?web微信?直播?假如你工作以后,你的老板让你来开发一个内部的微信程序,你需要怎么办?我们先来分析一下里面的技