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

 更新时间:2018年12月07日 15:19:31   作者:执笔记忆的空白  
今天小编就为大家分享一篇关于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;

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • Mysql详细剖析数据库中的存储引擎

    Mysql详细剖析数据库中的存储引擎

    这篇文章详细剖析了数据库中的存储引擎,存储引擎是数据库中非常关键的部分,有感兴趣的小伙伴可以参考阅读本文
    2023-03-03
  • 关于TIMESTAMP with implicit DEFAULT value is deprecated 错误解决方法

    关于TIMESTAMP with implicit DEFAULT value&

    本文介绍了“TIMESTAMP with implicit DEFAULT value is deprecated”错误的原因及解决方法,解决方法包括显式指定默认值、修改字段类型、更新数据库版本或寻求帮助,感兴趣的朋友一起看看吧
    2025-02-02
  • MySQL分区表的最佳实践指南

    MySQL分区表的最佳实践指南

    这篇文章主要给大家介绍了关于MySQL分区表的最佳实践指南,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-05-05
  • MySql索引和索引创建策略

    MySql索引和索引创建策略

    这篇文章主要介绍了MySql索引和索引创建策略,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的学习又是帮助
    2022-08-08
  • mysql中数据库覆盖导入的几种方式总结

    mysql中数据库覆盖导入的几种方式总结

    这篇文章主要介绍了mysql中数据库覆盖导入的几种方式总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 解决MySQL数据库中文模糊检索问题的方法

    解决MySQL数据库中文模糊检索问题的方法

    解决MySQL数据库中文模糊检索问题的方法...
    2007-11-11
  • Mysql中如何删除某个字段的最后四个字符

    Mysql中如何删除某个字段的最后四个字符

    这篇文章主要介绍了Mysql中如何删除某个字段的最后四个字符,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • zabbix监控mysql的实例方法

    zabbix监控mysql的实例方法

    在创建监控项之前要尽量考虑清楚要监控什么,怎么监控,监控数据如何存储,监控数据如何展现,如何处理报警等。本文主要介绍了zabbix监控mysql的实现方法,感兴趣的可以了解一下
    2021-06-06
  • 2023最新安装mysql8.0.33方式教程

    2023最新安装mysql8.0.33方式教程

    这几天被各种环境的配置搞疯了,查询了很多资料,也算有点经验,对于Mysql的安装进行了总结,这篇文章主要给大家介绍了关于2023年最新安装mysql8.0.33的方式教程,需要的朋友可以参考下
    2023-06-06
  • MySQL删除外键时报错Error Code:1091. Can‘t DROP ‘XXX‘的解决方法

    MySQL删除外键时报错Error Code:1091. Can‘t DROP ‘XXX‘的解决方法

    这篇文章主要给大家介绍了关于MySQL删除外键时报错Error Code:1091. Can‘t DROP ‘XXX‘的解决方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-08-08

最新评论