版本迭代数据库结构更新sql
/* 文件说明* 用于数据库表结构版本更新,注意以下几点:* 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相关推荐
- 生成数据库结构字段SQL语句
获取表名数据 SELECTTABLE_NAME 表名 ,TABLE_COMMENT 表注释 FROMINFORMATION_SCHEMA.`TABLES` WHEREtable_schema = '数 ...
- 1. 设计数据库结构
这个Golang后端大师班中,我们将学习如何使用Golang.PostgreSQL和Docker从头开始设计.开发和部署一个完整的后端. 课程包括: 设计数据库模式并从中自动生成 SQL 代码 深入了 ...
- 使用Code First Migrations依据代码更新数据库结构
ADO.NET团队最近发布了Code First Migrations Beta 1 for Entity Framework (EF).该程序包已经在NuGet提供,位于EntityFramewor ...
- sql+php修改mysql结构,MSSQL_修改SQL-SERVER数据库表结构的SQL命令附sql命令行修改数据库,具体不废话了,请看下文代码 - phpStudy...
修改SQL-SERVER数据库表结构的SQL命令附sql命令行修改数据库 具体不废话了,请看下文代码详细说明吧. 向表中增加一个 varchar 列: ALTER TABLE distributors ...
- (译)Windows Azure的7月更新:SQL数据库,流量管理,自动缩放,虚拟机
Windows Azure的7月更新:SQL数据库,流量管理,自动缩放,虚拟机 今早我们释出一些很棒的Windows Azure更新.这些新的提升包括: SQL数据库:支持SQL自动导出和一个新的高级 ...
- Code First 下自动更新数据库结构(Automatic Migrations)
示例 Web.config <?xml version="1.0" encoding="utf-8"?> <configuration> ...
- 实战:从Mysql数据库frm文件中,提取表结构创建SQL语句
需求 在某些特殊的场景下,例如你的mysql数据库无法启动,需要你将表的ibd文件拷贝到另一个数据库中,恢复业务数据库,恢复业务数据的前提,是你需要在另一个数据库中,创建好一模一样的表结构.这时你就需 ...
- 用友U8的SQL SERVER 数据库结构说明表
用友U8的SQL SERVER 数据库结构说明表 在帐套中的两个表,一个表是RPT_GRPDEF,存放帐套中重要的表名及相关说明:另一个是RPT_ITMDEF,存放的是主要表中的相关字段说 ...
- 15支持哪些数据库版本 tfs_版本和支持的功能 - SQL Server 2016 | Microsoft Docs
SQL Server 2016 的各版本和支持的功能Editions and supported features of SQL Server 2016 07/22/2020 本文内容 适用于:App ...
最新文章
- 如何改进你的脚本程序
- CodePush使用调研
- Go 语言的包依赖管理
- sap.ca.scfld.md.ComponentBase.extend
- 英语听说计算机考试演练专用,新中考首次英语听说机考12月23日举行,9月28日全体中学生模拟演练!...
- Spring boot项目集成Sharding Jdbc
- Mars 是什么、能做什么、如何做的——记 Mars 在 PyCon China 2018 上的分享
- JWT.NET的使用
- 大文件上传服务器、支持超大文件HTTP断点续传实践总结
- 全国计算机民办二本学校排行,艺术类二本院校排名,2018最新民办和公办院校全国排名...
- 流程平台:示例流程 - 主机申请审批流程
- Axure教程:淘宝商品图片放大效果
- 探针台常见问题—如何减少LHe制冷剂消耗
- 软件测试-测试需求分析
- 理解AutoResetEvent与ManualResetEvent的区别
- win10应用商店打不开及打开之后下载失败问题解决方法
- 最小二乘法求直线的理解
- P1183 多边形的面积
- manjaro linux无线网卡,为 Manjaro 18.1.4 配置无线网卡
- Android单应用开多进程与单进程跑多应用