动态更新数据库脚本——Mysql

414人阅读 评论(0) 收藏 举报
分类:

具体的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的用法。 








查看评论

MySQL数据库升级脚本

#更改表结构ALTER TABLE e_feerule CHANGE code prefix varchar(255) not null;ALTER TABLE e_feerule CHANGE lo...
  • wilfuler
  • wilfuler
  • 2007年11月27日 09:40
  • 1310

Mysql 数据库升级shell脚本编写与测试心得

Mysql 数据库升级shell脚本编写与测试心得
  • JenMinZhang
  • JenMinZhang
  • 2016年04月26日 17:45
  • 1955

用sql脚本建立Mysql数据库及表

用sql脚本建立Mysql数据库及表 建立一个名为DBName的数据库,并建立图书表、用户表、订单表、用户订货表 drop database if exists DBName; ...
  • qq_29663071
  • qq_29663071
  • 2016年01月18日 10:59
  • 6843

Windows 平台下自动备份MySQL数据的脚本

创建脚本文件backupDB.bat @echo off   set backupDir=d:/zcl_zhouyi/ set bakFileNameTail=%date:~0,4%-%date:~...
  • qwezcl
  • qwezcl
  • 2015年03月14日 17:12
  • 2011

MySQL Workbeanch 创建 Diagram 生成数据库脚本

MySQL Workbeanch 创建 Diagram 生成数据库脚本Diagram 中所有数据表生成数据库脚本 File → Export → Forward Engineer SQL Script...
  • u012873696
  • u012873696
  • 2016年09月26日 08:01
  • 495

CentOS系统mysql数据库自动备份脚本

#!/bin/bash databases=(benshi) basepath='/root/backup/' if [ ! -d "$basepath" ]; then mkdir -p "...
  • qq229596421
  • qq229596421
  • 2016年06月30日 17:30
  • 586

简单的Mysql数据库备份和同步脚本

应用背景简介: ‘123.57.111.222’为生产环境mysql所在IP。 为了方便调试,现搭建了一个调试服务器。 此脚本运行于调试服务器,拥有备份生产环境中mysql的数据,并将数据同步到调...
  • qq_16885135
  • qq_16885135
  • 2017年01月11日 15:07
  • 913

创建mysql数据库的自动化脚本

!/bin/bash HOSTNAME="localhost" PORT="3306" USERNAME="root" PASSWORD="1234" DBNAME="mydatabase" ...
  • duomoke
  • duomoke
  • 2015年10月27日 10:11
  • 2155

linux下使用脚本自动化远程备份MySQL数据库

通常情况下、mysql都需要备份,备份的方法有很多种。下面是我用脚本配合计划任务完成的自动备份远程的数据库。...
  • wyhappy612
  • wyhappy612
  • 2017年06月02日 17:29
  • 898

linux中mysql清空数据库脚本

mysql -uroot -padmin -Dess_db -e"truncate table users;truncate table roles"
  • wearegouest
  • wearegouest
  • 2010年10月19日 20:06
  • 3566
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 66万+
    积分: 5997
    排名: 5293
    你还在一个人孤独的奋斗吗?
    其实,你并不寂寞,欢迎加入CSDN Java群,这里是你的另一个家!    点击加入:CSDN Java群
    博客专栏
    最新评论