/*  文件说明*   用于数据库表结构版本更新,注意以下几点:*   1.新增表不能删除旧的表,否则数据丢失,CREATE TABLE IF NOT EXISTS*   2.新增字段、修改字段、删除字段,新增索引,删除索引,调用存储过程实现,否则第二次运行报错,存储过程名字Pro_Temp_ColumnWork, Pro_Temp_Index*   3.sql语句放在删除存储过程语句之前(END 删除存储过程),否则调用不到存储过程*   4.sql语句需要添加日期注释,方便追踪异常*   5.本地navicat运行本文件内容测试通过再上传*================================================================*/SET NAMES utf8;
use `paperless-meeting-cms`;DELIMITER $$;
DROP PROCEDURE IF EXISTS Pro_Temp_ColumnWork;
/*   Mysql版本修改表结构*   TableName:表名称*   ColumnName:字段名称*   SqlStr:字段参数*   CType:操作类型,1表示新增列,2表示修改列类型,3表示删除列*举例说明
-- 新增列
-- CALL Pro_Temp_ColumnWork ('表名','字段名','字段参数 ', 1);
-- CALL Pro_Temp_ColumnWork ('mytest','passwd','varchar(50) NOT NULL AFTER `name`', 1);
-- 修改列
-- CALL Pro_Temp_ColumnWork ('表名','字段名','字段参数 ', 2);
-- CALL Pro_Temp_ColumnWork ('mytest','passwd','varchar(60) NOT NULL AFTER `name`', 2);
-- 删除列
-- CALL Pro_Temp_ColumnWork ('表名','字段名','', 3);
-- CALL Pro_Temp_ColumnWork ('mytest','passwd','', 3);*================================================================*/
CREATE PROCEDURE Pro_Temp_ColumnWork(TableName VARCHAR(50),ColumnName VARCHAR(50),SqlStr VARCHAR(4000),CType INT)
BEGIN
DECLARE Rows1 INT;
SET Rows1=0;
SELECT COUNT(*) INTO Rows1  FROM INFORMATION_SCHEMA.Columns
WHERE table_schema= DATABASE() AND table_name=TableName AND column_name=ColumnName;
-- 新增列
IF (CType=1 AND Rows1<=0) THENSET SqlStr := CONCAT('ALTER TABLE ',TableName,' ADD COLUMN ',ColumnName,' ',SqlStr);-- 修改列类型
ELSEIF (CType=2 AND Rows1>0)  THENSET SqlStr := CONCAT('ALTER TABLE ',TableName,' MODIFY  ',ColumnName,' ',SqlStr);
-- 删除列
ELSEIF (CType=3 AND Rows1>0) THENSET SqlStr := CONCAT('ALTER TABLE  ',TableName,' DROP COLUMN  ',ColumnName);
ELSE  SET SqlStr :='';
END IF;
-- 执行命令
IF (SqlStr<>'') THENSET @SQL1 = SqlStr;PREPARE stmt1 FROM @SQL1;EXECUTE stmt1;DEALLOCATE PREPARE stmt1;
END IF;
END
-- 标记符结束
$$;
DELIMITER;DELIMITER $$;
DROP PROCEDURE IF EXISTS Pro_Temp_Index;
/*   Mysql版本修改索引*   TableName:表名称*   IndexName:索引名称*   SqlStr:添加索引语句*   CType: CType:操作类型,1表示新增索引,3表示删除索引*举例说明
-- 新增索引
-- CALL Pro_Temp_Index ('表名','索引名','索引添加语句', 1);
-- CALL Pro_Temp_Index ('mytest','idx_name','ADD INDEX `idx_name` (`name`)', 1);
-- 删除索引
-- CALL Pro_Temp_Index ('表名','索引名','', 3);
-- CALL Pro_Temp_Index ('mytest','idx_name','', 3);*================================================================*/
CREATE PROCEDURE Pro_Temp_Index(TableName VARCHAR(50),IndexName VARCHAR(50),SqlStr VARCHAR(4000),CType INT)
BEGIN
DECLARE Rows1 INT;
DECLARE t_sql VARCHAR(1000);
SET Rows1=0;
SET @t_sql=concat('SELECT COUNT(*) INTO @Rows1 FROM information_schema.statistics WHERE TABLE_NAME="',TableName,'" AND INDEX_NAME="',IndexName,'"');PREPARE stmt FROM @t_sql;EXECUTE stmt;DEALLOCATE PREPARE stmt;
-- 新增索引
IF (CType=1 AND @Rows1<=0) THENSET SqlStr := CONCAT('ALTER TABLE ',TableName,' ',SqlStr);
-- 删除索引
ELSEIF (CType=3 AND @Rows1>0) THENSET SqlStr := CONCAT('ALTER TABLE ',TableName,' DROP INDEX ',IndexName);
ELSE  SET SqlStr :='';
END IF;
-- 执行命令
IF (SqlStr<>'') THENSET @SQL1 = SqlStr;PREPARE stmt1 FROM @SQL1;EXECUTE stmt1;DEALLOCATE PREPARE stmt1;
END IF;
END
-- 标记符结束
$$;
DELIMITER;-- [2019-05-08]
CALL Pro_Temp_ColumnWork ('user','weight',"int(4) NOT NULL DEFAULT 0 COMMENT '用户排序权重,数值越大排名越前'", 1);-- END 删除存储过程
DROP PROCEDURE Pro_Temp_ColumnWork;
DROP PROCEDURE Pro_Temp_Index;

版本迭代数据库结构更新sql相关推荐

  1. 生成数据库结构字段SQL语句

    获取表名数据 SELECTTABLE_NAME 表名 ,TABLE_COMMENT 表注释 FROMINFORMATION_SCHEMA.`TABLES` WHEREtable_schema = '数 ...

  2. 1. 设计数据库结构

    这个Golang后端大师班中,我们将学习如何使用Golang.PostgreSQL和Docker从头开始设计.开发和部署一个完整的后端. 课程包括: 设计数据库模式并从中自动生成 SQL 代码 深入了 ...

  3. 使用Code First Migrations依据代码更新数据库结构

    ADO.NET团队最近发布了Code First Migrations Beta 1 for Entity Framework (EF).该程序包已经在NuGet提供,位于EntityFramewor ...

  4. sql+php修改mysql结构,MSSQL_修改SQL-SERVER数据库表结构的SQL命令附sql命令行修改数据库,具体不废话了,请看下文代码 - phpStudy...

    修改SQL-SERVER数据库表结构的SQL命令附sql命令行修改数据库 具体不废话了,请看下文代码详细说明吧. 向表中增加一个 varchar 列: ALTER TABLE distributors ...

  5. (译)Windows Azure的7月更新:SQL数据库,流量管理,自动缩放,虚拟机

    Windows Azure的7月更新:SQL数据库,流量管理,自动缩放,虚拟机 今早我们释出一些很棒的Windows Azure更新.这些新的提升包括: SQL数据库:支持SQL自动导出和一个新的高级 ...

  6. Code First 下自动更新数据库结构(Automatic Migrations)

    示例 Web.config <?xml version="1.0" encoding="utf-8"?> <configuration> ...

  7. 实战:从Mysql数据库frm文件中,提取表结构创建SQL语句

    需求 在某些特殊的场景下,例如你的mysql数据库无法启动,需要你将表的ibd文件拷贝到另一个数据库中,恢复业务数据库,恢复业务数据的前提,是你需要在另一个数据库中,创建好一模一样的表结构.这时你就需 ...

  8. 用友U8的SQL SERVER 数据库结构说明表

    用友U8的SQL SERVER 数据库结构说明表       在帐套中的两个表,一个表是RPT_GRPDEF,存放帐套中重要的表名及相关说明:另一个是RPT_ITMDEF,存放的是主要表中的相关字段说 ...

  9. 15支持哪些数据库版本 tfs_版本和支持的功能 - SQL Server 2016 | Microsoft Docs

    SQL Server 2016 的各版本和支持的功能Editions and supported features of SQL Server 2016 07/22/2020 本文内容 适用于:App ...

最新文章

  1. 如何改进你的脚本程序
  2. CodePush使用调研
  3. Go 语言的包依赖管理
  4. sap.ca.scfld.md.ComponentBase.extend
  5. 英语听说计算机考试演练专用,新中考首次英语听说机考12月23日举行,9月28日全体中学生模拟演练!...
  6. Spring boot项目集成Sharding Jdbc
  7. Mars 是什么、能做什么、如何做的——记 Mars 在 PyCon China 2018 上的分享
  8. JWT.NET的使用
  9. 大文件上传服务器、支持超大文件HTTP断点续传实践总结
  10. 全国计算机民办二本学校排行,艺术类二本院校排名,2018最新民办和公办院校全国排名...
  11. 流程平台:示例流程 - 主机申请审批流程
  12. Axure教程:淘宝商品图片放大效果
  13. 探针台常见问题—如何减少LHe制冷剂消耗
  14. 软件测试-测试需求分析
  15. 理解AutoResetEvent与ManualResetEvent的区别
  16. win10应用商店打不开及打开之后下载失败问题解决方法
  17. 最小二乘法求直线的理解
  18. P1183 多边形的面积
  19. manjaro linux无线网卡,为 Manjaro 18.1.4 配置无线网卡
  20. Android单应用开多进程与单进程跑多应用

热门文章

  1. his系统冗灾服务器,江苏南京-医疗HIS系统存储解决方案
  2. 贸易顺差与人民币升值的关系
  3. 教你一个用计算机表白的方法,七夕示爱教你用文件夹加密方式锁定表白
  4. 电脑组装需要准备的配件清单,仅供参考
  5. Python PEP8规范整理
  6. ARM汇编指令总结--英文全称及功能描述
  7. Ethercat 从站开发总结四:从站硬件分析
  8. 谢希仁计算机网络学习系列内容汇总
  9. 什么是内网,什么是公网,什么是私网
  10. TDH 集群的许可证管理机制及TDH集群的卸载与安装